chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
  6. chia/_tests/blockchain/test_build_chains.py +2 -4
  7. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  8. chia/_tests/clvm/coin_store.py +4 -7
  9. chia/_tests/clvm/test_clvm_step.py +4 -4
  10. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  11. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  12. chia/_tests/clvm/test_singletons.py +2 -4
  13. chia/_tests/clvm/test_spend_sim.py +2 -2
  14. chia/_tests/cmds/cmd_test_utils.py +27 -45
  15. chia/_tests/cmds/test_cmd_framework.py +6 -6
  16. chia/_tests/cmds/test_daemon.py +3 -3
  17. chia/_tests/cmds/test_show.py +4 -4
  18. chia/_tests/cmds/test_tx_config_args.py +1 -2
  19. chia/_tests/cmds/testing_classes.py +4 -5
  20. chia/_tests/cmds/wallet/test_did.py +24 -27
  21. chia/_tests/cmds/wallet/test_nft.py +12 -10
  22. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  23. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  24. chia/_tests/conftest.py +66 -31
  25. chia/_tests/connection_utils.py +2 -2
  26. chia/_tests/core/cmds/test_beta.py +4 -4
  27. chia/_tests/core/cmds/test_keys.py +2 -3
  28. chia/_tests/core/cmds/test_wallet.py +15 -15
  29. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  30. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  31. chia/_tests/core/daemon/test_daemon.py +11 -11
  32. chia/_tests/core/data_layer/conftest.py +2 -2
  33. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  34. chia/_tests/core/data_layer/test_data_store.py +10 -10
  35. chia/_tests/core/data_layer/util.py +11 -11
  36. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  37. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  38. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  39. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  40. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  41. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  42. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  43. chia/_tests/core/full_node/test_conditions.py +21 -23
  44. chia/_tests/core/full_node/test_full_node.py +273 -70
  45. chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
  46. chia/_tests/core/full_node/test_hint_management.py +2 -4
  47. chia/_tests/core/full_node/test_performance.py +0 -1
  48. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  49. chia/_tests/core/full_node/test_transactions.py +1 -2
  50. chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
  51. chia/_tests/core/mempool/test_mempool.py +54 -50
  52. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  53. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  54. chia/_tests/core/mempool/test_mempool_manager.py +988 -854
  55. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  56. chia/_tests/core/server/serve.py +7 -7
  57. chia/_tests/core/server/test_dos.py +1 -2
  58. chia/_tests/core/server/test_event_loop.py +12 -4
  59. chia/_tests/core/server/test_loop.py +7 -8
  60. chia/_tests/core/server/test_rate_limits.py +9 -8
  61. chia/_tests/core/server/test_server.py +61 -1
  62. chia/_tests/core/services/test_services.py +2 -2
  63. chia/_tests/core/ssl/test_ssl.py +2 -2
  64. chia/_tests/core/test_cost_calculation.py +2 -6
  65. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  66. chia/_tests/core/test_filter.py +0 -1
  67. chia/_tests/core/test_full_node_rpc.py +2 -2
  68. chia/_tests/core/test_merkle_set.py +1 -2
  69. chia/_tests/core/test_seeder.py +4 -4
  70. chia/_tests/core/util/test_config.py +4 -4
  71. chia/_tests/core/util/test_jsonify.py +2 -2
  72. chia/_tests/core/util/test_keychain.py +3 -3
  73. chia/_tests/core/util/test_lockfile.py +2 -1
  74. chia/_tests/core/util/test_log_exceptions.py +1 -2
  75. chia/_tests/core/util/test_streamable.py +17 -17
  76. chia/_tests/db/test_db_wrapper.py +3 -2
  77. chia/_tests/environments/wallet.py +14 -14
  78. chia/_tests/ether.py +4 -3
  79. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  80. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  81. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  82. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  83. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  84. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  85. chia/_tests/harvester/test_harvester_api.py +11 -4
  86. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  87. chia/_tests/plot_sync/test_receiver.py +11 -10
  88. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  89. chia/_tests/plot_sync/util.py +1 -2
  90. chia/_tests/plotting/test_plot_manager.py +7 -6
  91. chia/_tests/plotting/test_prover.py +30 -38
  92. chia/_tests/pools/test_pool_cmdline.py +4 -6
  93. chia/_tests/pools/test_pool_rpc.py +203 -61
  94. chia/_tests/pools/test_pool_wallet.py +3 -3
  95. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  96. chia/_tests/process_junit.py +2 -2
  97. chia/_tests/rpc/test_rpc_client.py +4 -4
  98. chia/_tests/rpc/test_rpc_server.py +3 -3
  99. chia/_tests/simulation/test_simulation.py +12 -25
  100. chia/_tests/solver/test_solver_service.py +13 -4
  101. chia/_tests/testconfig.py +2 -2
  102. chia/_tests/timelord/test_new_peak.py +22 -11
  103. chia/_tests/tools/test_run_block.py +0 -2
  104. chia/_tests/tools/test_virtual_project.py +2 -1
  105. chia/_tests/util/benchmarks.py +1 -0
  106. chia/_tests/util/blockchain.py +38 -36
  107. chia/_tests/util/blockchain_mock.py +11 -11
  108. chia/_tests/util/build_network_protocol_files.py +2 -1
  109. chia/_tests/util/coin_store.py +2 -1
  110. chia/_tests/util/config.py +1 -1
  111. chia/_tests/util/db_connection.py +2 -3
  112. chia/_tests/util/full_sync.py +9 -11
  113. chia/_tests/util/gen_ssl_certs.py +4 -5
  114. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  115. chia/_tests/util/misc.py +24 -24
  116. chia/_tests/util/network_protocol_data.py +20 -3
  117. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  118. chia/_tests/util/protocol_messages_json.py +292 -3
  119. chia/_tests/util/setup_nodes.py +62 -47
  120. chia/_tests/util/spend_sim.py +57 -57
  121. chia/_tests/util/test_async_pool.py +2 -3
  122. chia/_tests/util/test_chia_version.py +1 -3
  123. chia/_tests/util/test_config.py +3 -3
  124. chia/_tests/util/test_full_block_utils.py +6 -3
  125. chia/_tests/util/test_limited_semaphore.py +1 -2
  126. chia/_tests/util/test_misc.py +2 -2
  127. chia/_tests/util/test_network.py +1 -2
  128. chia/_tests/util/test_priority_mutex.py +3 -3
  129. chia/_tests/util/test_recursive_replace.py +5 -6
  130. chia/_tests/util/test_replace_str_to_bytes.py +9 -10
  131. chia/_tests/util/test_testnet_overrides.py +3 -3
  132. chia/_tests/util/time_out_assert.py +2 -2
  133. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  134. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  135. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  136. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  137. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  138. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  139. chia/_tests/wallet/conftest.py +6 -6
  140. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  141. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  142. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  145. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  146. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  147. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  148. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  149. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  150. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  151. chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
  152. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  153. chia/_tests/wallet/test_coin_management.py +2 -2
  154. chia/_tests/wallet/test_conditions.py +45 -51
  155. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  156. chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
  157. chia/_tests/wallet/test_notifications.py +14 -14
  158. chia/_tests/wallet/test_signer_protocol.py +5 -5
  159. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  160. chia/_tests/wallet/test_transaction_store.py +20 -20
  161. chia/_tests/wallet/test_util.py +2 -2
  162. chia/_tests/wallet/test_wallet.py +380 -228
  163. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  164. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  165. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  166. chia/_tests/wallet/test_wallet_node.py +16 -15
  167. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  168. chia/_tests/wallet/test_wallet_utils.py +2 -3
  169. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  170. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  171. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  172. chia/_tests/wallet/wallet_block_tools.py +12 -11
  173. chia/_tests/weight_proof/config.py +1 -0
  174. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  175. chia/apis/__init__.py +21 -0
  176. chia/apis/farmer_stub.py +102 -0
  177. chia/apis/full_node_stub.py +374 -0
  178. chia/apis/harvester_stub.py +57 -0
  179. chia/apis/introducer_stub.py +35 -0
  180. chia/apis/solver_stub.py +30 -0
  181. chia/apis/stub_protocol_registry.py +21 -0
  182. chia/apis/timelord_stub.py +39 -0
  183. chia/apis/wallet_stub.py +161 -0
  184. chia/cmds/beta.py +3 -4
  185. chia/cmds/beta_funcs.py +4 -3
  186. chia/cmds/check_wallet_db.py +4 -4
  187. chia/cmds/chia.py +1 -2
  188. chia/cmds/cmd_classes.py +11 -13
  189. chia/cmds/cmd_helpers.py +11 -11
  190. chia/cmds/cmds_util.py +15 -15
  191. chia/cmds/coin_funcs.py +6 -7
  192. chia/cmds/coins.py +2 -3
  193. chia/cmds/configure.py +1 -2
  194. chia/cmds/data.py +42 -42
  195. chia/cmds/data_funcs.py +81 -81
  196. chia/cmds/db.py +4 -5
  197. chia/cmds/db_backup_func.py +2 -2
  198. chia/cmds/db_upgrade_func.py +3 -3
  199. chia/cmds/db_validate_func.py +2 -2
  200. chia/cmds/dev/data.py +4 -4
  201. chia/cmds/dev/gh.py +5 -5
  202. chia/cmds/dev/installers.py +2 -3
  203. chia/cmds/dev/mempool.py +3 -4
  204. chia/cmds/dev/mempool_funcs.py +4 -4
  205. chia/cmds/dev/sim.py +8 -8
  206. chia/cmds/dump_keyring.py +3 -3
  207. chia/cmds/farm.py +6 -8
  208. chia/cmds/farm_funcs.py +25 -24
  209. chia/cmds/init_funcs.py +4 -4
  210. chia/cmds/keys.py +16 -18
  211. chia/cmds/keys_funcs.py +36 -36
  212. chia/cmds/netspace.py +1 -3
  213. chia/cmds/netspace_funcs.py +1 -2
  214. chia/cmds/options.py +3 -2
  215. chia/cmds/param_types.py +17 -16
  216. chia/cmds/passphrase.py +6 -7
  217. chia/cmds/passphrase_funcs.py +11 -13
  218. chia/cmds/peer.py +1 -3
  219. chia/cmds/peer_funcs.py +3 -3
  220. chia/cmds/plotnft.py +6 -7
  221. chia/cmds/plotnft_funcs.py +37 -26
  222. chia/cmds/rpc.py +3 -3
  223. chia/cmds/show.py +3 -5
  224. chia/cmds/show_funcs.py +9 -9
  225. chia/cmds/sim_funcs.py +25 -26
  226. chia/cmds/solver.py +1 -3
  227. chia/cmds/solver_funcs.py +1 -2
  228. chia/cmds/start_funcs.py +2 -2
  229. chia/cmds/wallet.py +76 -81
  230. chia/cmds/wallet_funcs.py +206 -177
  231. chia/consensus/augmented_chain.py +6 -6
  232. chia/consensus/block_body_validation.py +19 -15
  233. chia/consensus/block_creation.py +25 -21
  234. chia/consensus/block_header_validation.py +27 -13
  235. chia/consensus/block_height_map.py +3 -6
  236. chia/consensus/block_height_map_protocol.py +2 -2
  237. chia/consensus/block_record.py +2 -4
  238. chia/consensus/blockchain.py +58 -40
  239. chia/consensus/blockchain_interface.py +7 -7
  240. chia/consensus/coin_store_protocol.py +5 -6
  241. chia/consensus/condition_tools.py +4 -4
  242. chia/consensus/cost_calculator.py +2 -3
  243. chia/consensus/default_constants.py +19 -13
  244. chia/consensus/deficit.py +1 -3
  245. chia/consensus/difficulty_adjustment.py +3 -5
  246. chia/consensus/find_fork_point.py +2 -4
  247. chia/consensus/full_block_to_block_record.py +11 -13
  248. chia/consensus/generator_tools.py +2 -3
  249. chia/consensus/get_block_challenge.py +50 -26
  250. chia/consensus/get_block_generator.py +2 -3
  251. chia/consensus/make_sub_epoch_summary.py +8 -7
  252. chia/consensus/multiprocess_validation.py +31 -20
  253. chia/consensus/pos_quality.py +6 -23
  254. chia/consensus/pot_iterations.py +17 -44
  255. chia/consensus/signage_point.py +4 -5
  256. chia/consensus/vdf_info_computation.py +2 -4
  257. chia/daemon/client.py +8 -8
  258. chia/daemon/keychain_proxy.py +31 -37
  259. chia/daemon/server.py +32 -33
  260. chia/daemon/windows_signal.py +4 -3
  261. chia/data_layer/data_layer.py +86 -77
  262. chia/data_layer/data_layer_rpc_api.py +9 -9
  263. chia/data_layer/data_layer_rpc_client.py +13 -15
  264. chia/data_layer/data_layer_server.py +3 -3
  265. chia/data_layer/data_layer_util.py +14 -14
  266. chia/data_layer/data_layer_wallet.py +94 -101
  267. chia/data_layer/data_store.py +50 -50
  268. chia/data_layer/dl_wallet_store.py +9 -12
  269. chia/data_layer/download_data.py +8 -9
  270. chia/data_layer/s3_plugin_service.py +5 -9
  271. chia/data_layer/start_data_layer.py +5 -5
  272. chia/farmer/farmer.py +31 -31
  273. chia/farmer/farmer_api.py +45 -33
  274. chia/farmer/farmer_rpc_api.py +5 -4
  275. chia/farmer/farmer_rpc_client.py +6 -6
  276. chia/farmer/start_farmer.py +6 -6
  277. chia/full_node/block_store.py +13 -16
  278. chia/full_node/check_fork_next_block.py +1 -2
  279. chia/full_node/coin_store.py +15 -16
  280. chia/full_node/eligible_coin_spends.py +3 -3
  281. chia/full_node/fee_estimate_store.py +2 -3
  282. chia/full_node/fee_tracker.py +1 -2
  283. chia/full_node/full_block_utils.py +4 -4
  284. chia/full_node/full_node.py +239 -223
  285. chia/full_node/full_node_api.py +197 -152
  286. chia/full_node/full_node_rpc_api.py +34 -32
  287. chia/full_node/full_node_rpc_client.py +18 -19
  288. chia/full_node/full_node_store.py +45 -43
  289. chia/full_node/hard_fork_utils.py +44 -0
  290. chia/full_node/hint_management.py +2 -2
  291. chia/full_node/mempool.py +17 -19
  292. chia/full_node/mempool_manager.py +89 -42
  293. chia/full_node/pending_tx_cache.py +2 -3
  294. chia/full_node/start_full_node.py +5 -5
  295. chia/full_node/sync_store.py +3 -4
  296. chia/full_node/tx_processing_queue.py +120 -36
  297. chia/full_node/weight_proof.py +61 -48
  298. chia/harvester/harvester.py +25 -24
  299. chia/harvester/harvester_api.py +61 -38
  300. chia/harvester/harvester_rpc_api.py +10 -10
  301. chia/harvester/start_harvester.py +4 -4
  302. chia/introducer/introducer.py +3 -3
  303. chia/introducer/introducer_api.py +6 -4
  304. chia/introducer/start_introducer.py +4 -4
  305. chia/legacy/keyring.py +3 -3
  306. chia/plot_sync/delta.py +1 -2
  307. chia/plot_sync/receiver.py +20 -17
  308. chia/plot_sync/sender.py +15 -10
  309. chia/plotters/bladebit.py +7 -7
  310. chia/plotters/chiapos.py +2 -2
  311. chia/plotters/madmax.py +4 -4
  312. chia/plotters/plotters.py +4 -4
  313. chia/plotters/plotters_util.py +3 -3
  314. chia/plotting/cache.py +20 -14
  315. chia/plotting/check_plots.py +26 -35
  316. chia/plotting/create_plots.py +22 -23
  317. chia/plotting/manager.py +21 -14
  318. chia/plotting/prover.py +59 -42
  319. chia/plotting/util.py +16 -16
  320. chia/pools/pool_config.py +2 -1
  321. chia/pools/pool_puzzles.py +11 -12
  322. chia/pools/pool_wallet.py +34 -57
  323. chia/pools/pool_wallet_info.py +39 -10
  324. chia/protocols/farmer_protocol.py +8 -9
  325. chia/protocols/fee_estimate.py +3 -4
  326. chia/protocols/full_node_protocol.py +3 -4
  327. chia/protocols/harvester_protocol.py +27 -15
  328. chia/protocols/outbound_message.py +3 -3
  329. chia/protocols/pool_protocol.py +8 -9
  330. chia/protocols/shared_protocol.py +1 -2
  331. chia/protocols/solver_protocol.py +9 -2
  332. chia/protocols/timelord_protocol.py +4 -7
  333. chia/protocols/wallet_protocol.py +11 -12
  334. chia/rpc/rpc_client.py +9 -9
  335. chia/rpc/rpc_server.py +17 -17
  336. chia/rpc/util.py +2 -2
  337. chia/seeder/crawler.py +8 -8
  338. chia/seeder/crawler_api.py +21 -27
  339. chia/seeder/crawler_rpc_api.py +2 -2
  340. chia/seeder/dns_server.py +21 -21
  341. chia/seeder/start_crawler.py +4 -4
  342. chia/server/address_manager.py +15 -16
  343. chia/server/api_protocol.py +11 -11
  344. chia/server/chia_policy.py +46 -26
  345. chia/server/introducer_peers.py +2 -3
  346. chia/server/node_discovery.py +19 -19
  347. chia/server/rate_limit_numbers.py +4 -5
  348. chia/server/rate_limits.py +4 -4
  349. chia/server/resolve_peer_info.py +4 -4
  350. chia/server/server.py +49 -52
  351. chia/server/signal_handlers.py +6 -6
  352. chia/server/start_service.py +17 -17
  353. chia/server/upnp.py +4 -6
  354. chia/server/ws_connection.py +52 -37
  355. chia/simulator/add_blocks_in_batches.py +1 -3
  356. chia/simulator/block_tools.py +312 -200
  357. chia/simulator/full_node_simulator.py +56 -35
  358. chia/simulator/keyring.py +2 -3
  359. chia/simulator/setup_services.py +15 -15
  360. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  361. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  362. chia/simulator/simulator_protocol.py +1 -2
  363. chia/simulator/simulator_test_tools.py +3 -3
  364. chia/simulator/start_simulator.py +7 -7
  365. chia/simulator/wallet_tools.py +10 -10
  366. chia/solver/solver.py +10 -10
  367. chia/solver/solver_api.py +10 -8
  368. chia/solver/solver_rpc_api.py +2 -2
  369. chia/solver/start_solver.py +4 -4
  370. chia/ssl/cacert.pem +148 -90
  371. chia/ssl/chia_ca.crt +14 -10
  372. chia/ssl/chia_ca_old.crt +19 -0
  373. chia/ssl/create_ssl.py +4 -4
  374. chia/ssl/renewedselfsignedca.conf +4 -0
  375. chia/ssl/ssl_check.py +1 -2
  376. chia/timelord/iters_from_block.py +1 -4
  377. chia/timelord/start_timelord.py +4 -4
  378. chia/timelord/timelord.py +44 -40
  379. chia/timelord/timelord_api.py +6 -4
  380. chia/timelord/timelord_launcher.py +2 -2
  381. chia/timelord/timelord_rpc_api.py +2 -2
  382. chia/timelord/timelord_state.py +11 -12
  383. chia/types/block_protocol.py +1 -3
  384. chia/types/blockchain_format/coin.py +1 -3
  385. chia/types/blockchain_format/program.py +11 -8
  386. chia/types/blockchain_format/proof_of_space.py +123 -76
  387. chia/types/blockchain_format/tree_hash.py +3 -3
  388. chia/types/blockchain_format/vdf.py +1 -2
  389. chia/types/coin_spend.py +3 -3
  390. chia/types/mempool_item.py +5 -5
  391. chia/types/mempool_submission_status.py +2 -3
  392. chia/types/peer_info.py +1 -2
  393. chia/types/unfinished_header_block.py +3 -4
  394. chia/types/validation_state.py +1 -2
  395. chia/util/action_scope.py +8 -8
  396. chia/util/async_pool.py +5 -5
  397. chia/util/bech32m.py +1 -2
  398. chia/util/beta_metrics.py +2 -2
  399. chia/util/block_cache.py +4 -4
  400. chia/util/chia_logging.py +2 -2
  401. chia/util/chia_version.py +1 -2
  402. chia/util/config.py +15 -16
  403. chia/util/db_wrapper.py +26 -27
  404. chia/util/default_root.py +1 -2
  405. chia/util/errors.py +3 -3
  406. chia/util/file_keyring.py +14 -14
  407. chia/util/files.py +2 -3
  408. chia/util/hash.py +4 -4
  409. chia/util/initial-config.yaml +4 -5
  410. chia/util/inline_executor.py +2 -1
  411. chia/util/ip_address.py +1 -2
  412. chia/util/keychain.py +25 -27
  413. chia/util/keyring_wrapper.py +18 -19
  414. chia/util/lock.py +3 -4
  415. chia/util/log_exceptions.py +1 -2
  416. chia/util/lru_cache.py +2 -2
  417. chia/util/network.py +6 -6
  418. chia/util/path.py +2 -3
  419. chia/util/priority_mutex.py +2 -2
  420. chia/util/profiler.py +1 -2
  421. chia/util/safe_cancel_task.py +1 -2
  422. chia/util/streamable.py +24 -10
  423. chia/util/task_referencer.py +1 -1
  424. chia/util/timing.py +3 -3
  425. chia/util/virtual_project_analysis.py +6 -5
  426. chia/util/ws_message.py +2 -2
  427. chia/wallet/cat_wallet/cat_info.py +3 -4
  428. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  429. chia/wallet/cat_wallet/cat_utils.py +3 -4
  430. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  431. chia/wallet/cat_wallet/lineage_store.py +3 -4
  432. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  433. chia/wallet/coin_selection.py +9 -10
  434. chia/wallet/conditions.py +142 -106
  435. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  436. chia/wallet/derivation_record.py +1 -2
  437. chia/wallet/derive_keys.py +2 -4
  438. chia/wallet/did_wallet/did_info.py +10 -11
  439. chia/wallet/did_wallet/did_wallet.py +36 -82
  440. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  441. chia/wallet/driver_protocol.py +5 -7
  442. chia/wallet/lineage_proof.py +4 -4
  443. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  444. chia/wallet/nft_wallet/nft_info.py +8 -9
  445. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  446. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  447. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  448. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  449. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  450. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  451. chia/wallet/notification_manager.py +3 -3
  452. chia/wallet/notification_store.py +44 -61
  453. chia/wallet/outer_puzzles.py +6 -7
  454. chia/wallet/puzzle_drivers.py +34 -6
  455. chia/wallet/puzzles/clawback/drivers.py +6 -6
  456. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  457. chia/wallet/puzzles/load_clvm.py +1 -1
  458. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  459. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  460. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  461. chia/wallet/puzzles/tails.py +3 -3
  462. chia/wallet/singleton.py +5 -7
  463. chia/wallet/singleton_record.py +3 -3
  464. chia/wallet/start_wallet.py +5 -5
  465. chia/wallet/trade_manager.py +37 -58
  466. chia/wallet/trade_record.py +4 -4
  467. chia/wallet/trading/offer.py +59 -46
  468. chia/wallet/trading/trade_store.py +8 -9
  469. chia/wallet/transaction_record.py +8 -8
  470. chia/wallet/uncurried_puzzle.py +1 -2
  471. chia/wallet/util/clvm_streamable.py +12 -12
  472. chia/wallet/util/compute_hints.py +4 -5
  473. chia/wallet/util/curry_and_treehash.py +1 -2
  474. chia/wallet/util/merkle_tree.py +2 -3
  475. chia/wallet/util/peer_request_cache.py +8 -8
  476. chia/wallet/util/signing.py +85 -0
  477. chia/wallet/util/tx_config.py +15 -6
  478. chia/wallet/util/wallet_sync_utils.py +14 -16
  479. chia/wallet/util/wallet_types.py +2 -2
  480. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  481. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  482. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  483. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  484. chia/wallet/vc_wallet/vc_store.py +5 -6
  485. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  486. chia/wallet/wallet.py +50 -78
  487. chia/wallet/wallet_action_scope.py +11 -11
  488. chia/wallet/wallet_blockchain.py +12 -12
  489. chia/wallet/wallet_coin_record.py +12 -6
  490. chia/wallet/wallet_coin_store.py +24 -25
  491. chia/wallet/wallet_interested_store.py +3 -5
  492. chia/wallet/wallet_nft_store.py +10 -11
  493. chia/wallet/wallet_node.py +53 -61
  494. chia/wallet/wallet_node_api.py +5 -3
  495. chia/wallet/wallet_protocol.py +23 -23
  496. chia/wallet/wallet_puzzle_store.py +15 -18
  497. chia/wallet/wallet_request_types.py +778 -114
  498. chia/wallet/wallet_retry_store.py +1 -3
  499. chia/wallet/wallet_rpc_api.py +572 -909
  500. chia/wallet/wallet_rpc_client.py +87 -279
  501. chia/wallet/wallet_singleton_store.py +3 -4
  502. chia/wallet/wallet_state_manager.py +332 -106
  503. chia/wallet/wallet_transaction_store.py +11 -14
  504. chia/wallet/wallet_user_store.py +4 -6
  505. chia/wallet/wallet_weight_proof_handler.py +4 -4
  506. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
  507. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
  508. chia/apis.py +0 -21
  509. chia/consensus/check_time_locks.py +0 -57
  510. chia/data_layer/puzzles/__init__.py +0 -0
  511. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  512. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  513. chia/types/coin_record.py +0 -44
  514. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  515. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  516. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  517. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  518. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  520. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  521. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  522. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  524. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  525. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  526. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  527. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  528. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  529. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
  530. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
  531. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
@@ -19,7 +19,7 @@ from chia._tests.environments.wallet import (
19
19
  from chia._tests.util.time_out_assert import time_out_assert, time_out_assert_not_none
20
20
  from chia.simulator.simulator_protocol import ReorgProtocol
21
21
  from chia.types.blockchain_format.coin import Coin, coin_as_list
22
- from chia.types.blockchain_format.program import NIL, Program
22
+ from chia.types.blockchain_format.program import Program
23
23
  from chia.types.coin_spend import make_spend
24
24
  from chia.util.bech32m import encode_puzzle_hash
25
25
  from chia.util.db_wrapper import DBWrapper2
@@ -82,7 +82,9 @@ async def mint_cat(
82
82
  1,
83
83
  [
84
84
  CreateCoin(wrapped_inner_puzzle_hash, amount, memos=[inner_puzzle_hash]).to_program(),
85
- UnknownCondition(opcode=Program.to(51), args=[NIL, Program.to(-113), tail, NIL]).to_program(),
85
+ UnknownCondition(
86
+ opcode=Program.to(51), args=[Program.NIL, Program.to(-113), tail, Program.NIL]
87
+ ).to_program(),
86
88
  ],
87
89
  )
88
90
  )
@@ -112,14 +114,14 @@ async def mint_cat(
112
114
  cat_addition,
113
115
  tail_hash,
114
116
  eve_inner_puzzle,
115
- NIL,
117
+ Program.NIL,
116
118
  )
117
119
  ],
118
120
  )
119
121
  )
120
122
 
121
123
  cat_wallet = await wallet_type.get_or_create_wallet_for_cat(
122
- environment.wallet_state_manager, environment.xch_wallet, tail_hash.hex(), *extra_args
124
+ environment.wallet_state_manager, environment.xch_wallet, tail_hash, *extra_args
123
125
  )
124
126
 
125
127
  await wallet_environments.process_pending_states(
@@ -575,7 +577,7 @@ async def test_get_wallet_for_asset_id(wallet_environments: WalletTestFramework,
575
577
 
576
578
  # Test that the a default CAT will initialize correctly
577
579
  asset = DEFAULT_CATS[next(iter(DEFAULT_CATS))]
578
- asset_id = asset["asset_id"]
580
+ asset_id = bytes32.from_hexstr(asset["asset_id"])
579
581
  if wallet_type is RCATWallet:
580
582
  extra_args: Any = (bytes32.zeros,)
581
583
  else:
@@ -1087,7 +1089,9 @@ async def test_cat_max_amount_send(wallet_environments: WalletTestFramework, wal
1087
1089
  for i in range(1, 50):
1088
1090
  amounts.append(uint64(i))
1089
1091
  puzzle_hashes.append(cat_2_hash)
1090
- spent_coin = (await cat_wallet.get_cat_spendable_coins())[0].coin
1092
+ spent_coin = next(
1093
+ iter(await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id()))
1094
+ ).coin
1091
1095
  await cat_wallet.generate_signed_transaction(amounts, puzzle_hashes, action_scope, coins={spent_coin})
1092
1096
 
1093
1097
  await wallet_environments.process_pending_states(
@@ -1118,7 +1122,7 @@ async def test_cat_max_amount_send(wallet_environments: WalletTestFramework, wal
1118
1122
  )
1119
1123
 
1120
1124
  async def check_all_there() -> bool:
1121
- spendable = await cat_wallet.get_cat_spendable_coins()
1125
+ spendable = await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id())
1122
1126
  spendable_name_set = set()
1123
1127
  for record in spendable:
1124
1128
  spendable_name_set.add(record.coin.name())
@@ -1411,7 +1415,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
1411
1415
  if wallet_type is RCATWallet:
1412
1416
  inner_puzhash = create_revocation_layer(bytes32.zeros, inner_puzhash).get_tree_hash()
1413
1417
  puzzlehash_unhardened = construct_cat_puzzle(
1414
- CAT_MOD, Program.to(None).get_tree_hash(), inner_puzhash
1418
+ CAT_MOD, Program.NIL.get_tree_hash(), inner_puzhash
1415
1419
  ).get_tree_hash_precalc(inner_puzhash)
1416
1420
  change_derivation = DerivationRecord(
1417
1421
  uint32(0), puzzlehash_unhardened, pubkey_unhardened, WalletType.CAT, uint32(2), False
@@ -1422,7 +1426,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
1422
1426
  our_puzzle = await action_scope.get_puzzle(wallet.wallet_state_manager)
1423
1427
  cat_puzzle = construct_cat_puzzle(
1424
1428
  CAT_MOD,
1425
- Program.to(None).get_tree_hash(),
1429
+ Program.NIL.get_tree_hash(),
1426
1430
  Program.to(1),
1427
1431
  )
1428
1432
  addr = encode_puzzle_hash(cat_puzzle.get_tree_hash(), "txch")
@@ -1451,7 +1455,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
1451
1455
  cat_coin = next(c for c in spend_bundle.additions() if c.amount == cat_amount_0)
1452
1456
  next_coin = Coin(
1453
1457
  cat_coin.name(),
1454
- construct_cat_puzzle(CAT_MOD, Program.to(None).get_tree_hash(), our_puzzle).get_tree_hash(),
1458
+ construct_cat_puzzle(CAT_MOD, Program.NIL.get_tree_hash(), our_puzzle).get_tree_hash(),
1455
1459
  cat_amount_0,
1456
1460
  )
1457
1461
  eve_spend, _ = await wsm.sign_bundle(
@@ -1478,7 +1482,7 @@ async def test_cat_change_detection(wallet_environments: WalletTestFramework, wa
1478
1482
  ),
1479
1483
  make_spend(
1480
1484
  next_coin,
1481
- construct_cat_puzzle(CAT_MOD, Program.to(None).get_tree_hash(), our_puzzle),
1485
+ construct_cat_puzzle(CAT_MOD, Program.NIL.get_tree_hash(), our_puzzle),
1482
1486
  Program.to(
1483
1487
  [
1484
1488
  [
@@ -1647,7 +1651,9 @@ async def test_cat_melt_balance(wallet_environments: WalletTestFramework) -> Non
1647
1651
  # Let's test that continuing to melt this CAT results in the correct balance changes
1648
1652
  for _ in range(5):
1649
1653
  tx_amount -= 1
1650
- new_coin = (await cat_wallet.get_cat_spendable_coins())[0].coin
1654
+ new_coin = next(
1655
+ iter(await cat_wallet.wallet_state_manager.get_spendable_coins_for_wallet(cat_wallet.id()))
1656
+ ).coin
1651
1657
  new_spend = unsigned_spend_bundle_for_spendable_cats(
1652
1658
  CAT_MOD,
1653
1659
  [
@@ -1660,7 +1666,7 @@ async def test_cat_melt_balance(wallet_environments: WalletTestFramework) -> Non
1660
1666
  conditions=(
1661
1667
  UnknownCondition(
1662
1668
  opcode=Program.to(51),
1663
- args=[Program.to(None), Program.to(-113), Program.to(ACS_TAIL), Program.to(None)],
1669
+ args=[Program.NIL, Program.to(-113), Program.to(ACS_TAIL), Program.NIL],
1664
1670
  ),
1665
1671
  ),
1666
1672
  ),
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Optional
3
+ from typing import Any
4
4
 
5
5
  import pytest
6
6
  from chia_rs import G2Element
@@ -43,8 +43,8 @@ def str_to_cat_hash(tail_str: str) -> bytes32:
43
43
 
44
44
  # This method takes a dictionary of strings mapping to amounts and generates the appropriate CAT/XCH coins
45
45
  async def generate_coins(
46
- sim: SpendSim, sim_client: SimClient, requested_coins: dict[Optional[str], list[int]]
47
- ) -> dict[Optional[str], list[Coin]]:
46
+ sim: SpendSim, sim_client: SimClient, requested_coins: dict[str | None, list[int]]
47
+ ) -> dict[str | None, list[Coin]]:
48
48
  await sim.farm_block(acs_ph)
49
49
  parent_coin = next(cr.coin for cr in await sim_client.get_coin_records_by_puzzle_hash(acs_ph))
50
50
 
@@ -85,7 +85,7 @@ async def generate_coins(
85
85
  await sim.farm_block()
86
86
 
87
87
  # Search for all of the coins and put them into a dictionary
88
- coin_dict: dict[Optional[str], list[Coin]] = {}
88
+ coin_dict: dict[str | None, list[Coin]] = {}
89
89
  for tail_str, _ in requested_coins.items():
90
90
  if tail_str:
91
91
  tail_hash = str_to_tail_hash(tail_str)
@@ -113,7 +113,7 @@ def generate_secure_bundle(
113
113
  selected_coins: list[Coin],
114
114
  announcements: list[AssertPuzzleAnnouncement],
115
115
  offered_amount: uint64,
116
- tail_str: Optional[str] = None,
116
+ tail_str: str | None = None,
117
117
  ) -> WalletSpendBundle:
118
118
  announcement_assertions = [a.to_program() for a in announcements]
119
119
  selected_coin_amount = sum(c.amount for c in selected_coins)
@@ -173,10 +173,10 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
173
173
  {"type": AssetType.CAT.value, "tail": "0x" + str_to_tail_hash("blue").hex()}
174
174
  ),
175
175
  }
176
- driver_dict_as_infos = {key.hex(): value.info for key, value in driver_dict.items()}
176
+ driver_dict_as_summary = {key.hex(): value for key, value in driver_dict.items()}
177
177
 
178
178
  # Create an XCH Offer for RED
179
- chia_requested_payments: dict[Optional[bytes32], list[CreateCoin]] = {
179
+ chia_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
180
180
  str_to_tail_hash("red"): [
181
181
  CreateCoin(acs_ph, uint64(100), [b"memo"]),
182
182
  CreateCoin(acs_ph, uint64(200), [b"memo"]),
@@ -191,7 +191,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
191
191
  # Create a RED Offer for XCH
192
192
  red_coins_1 = red_coins[0:1]
193
193
  red_coins_2 = red_coins[1:]
194
- red_requested_payments: dict[Optional[bytes32], list[CreateCoin]] = {
194
+ red_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
195
195
  None: [CreateCoin(acs_ph, uint64(300), [b"red memo"]), CreateCoin(acs_ph, uint64(350), [b"red memo"])]
196
196
  }
197
197
  red_notarized_payments = Offer.notarize_payments(red_requested_payments, red_coins_1)
@@ -202,7 +202,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
202
202
  red_offer = Offer(red_notarized_payments, red_secured_bundle, driver_dict)
203
203
  assert not red_offer.is_valid()
204
204
 
205
- red_requested_payments_2: dict[Optional[bytes32], list[CreateCoin]] = {
205
+ red_requested_payments_2: dict[bytes32 | None, list[CreateCoin]] = {
206
206
  None: [CreateCoin(acs_ph, uint64(50), [b"red memo"])]
207
207
  }
208
208
  red_notarized_payments_2 = Offer.notarize_payments(red_requested_payments_2, red_coins_2)
@@ -220,7 +220,7 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
220
220
  assert new_offer.is_valid()
221
221
 
222
222
  # Create yet another offer of BLUE for XCH and RED
223
- blue_requested_payments: dict[Optional[bytes32], list[CreateCoin]] = {
223
+ blue_requested_payments: dict[bytes32 | None, list[CreateCoin]] = {
224
224
  None: [CreateCoin(acs_ph, uint64(200), [b"blue memo"])],
225
225
  str_to_tail_hash("red"): [CreateCoin(acs_ph, uint64(50), [b"blue memo"])],
226
226
  }
@@ -239,9 +239,9 @@ async def test_complex_offer(cost_logger: CostLogger) -> None:
239
239
  }
240
240
  assert new_offer.get_requested_amounts() == {None: 900, str_to_tail_hash("red"): 350}
241
241
  assert new_offer.summary() == (
242
- {"xch": 1000, str_to_tail_hash("red").hex(): 350, str_to_tail_hash("blue").hex(): 2000},
243
- {"xch": 900, str_to_tail_hash("red").hex(): 350},
244
- driver_dict_as_infos,
242
+ {"xch": "1000", str_to_tail_hash("red").hex(): "350", str_to_tail_hash("blue").hex(): "2000"},
243
+ {"xch": "900", str_to_tail_hash("red").hex(): "350"},
244
+ driver_dict_as_summary,
245
245
  ConditionValidTimes(),
246
246
  )
247
247
  assert new_offer.get_pending_amounts() == {
@@ -28,7 +28,7 @@ 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, OfferSummary
31
+ from chia.wallet.trading.offer import Offer, OfferSpecification
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,7 +36,14 @@ 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
+ from chia.wallet.wallet_request_types import (
40
+ CRCATApprovePending,
41
+ VCAddProofs,
42
+ VCGetList,
43
+ VCGetProofsForRoot,
44
+ VCMint,
45
+ VCSpend,
46
+ )
40
47
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
41
48
 
42
49
 
@@ -119,7 +126,7 @@ async def test_cat_trades(
119
126
 
120
127
  trusted = len(wallet_node_maker.config["trusted_peers"]) > 0
121
128
 
122
- # Because making/taking CR-CATs is asymetrical, approving the hacked together aggregation test will fail
129
+ # Because making/taking CR-CATs is asymmetrical, approving the hacked together aggregation test will fail
123
130
  # The taker is "making" offers that it is approving with a VC which multiple actual makers would never do
124
131
  # This is really a test of CATOuterPuzzle anyways and is not correlated with any of our params
125
132
  test_aggregation = not credential_restricted and not wallet_environments.tx_config.reuse_puzhash and trusted
@@ -173,7 +180,7 @@ async def test_cat_trades(
173
180
  cat_wallet_maker: CATWallet = await CRCATWallet.get_or_create_wallet_for_cat(
174
181
  wallet_node_maker.wallet_state_manager,
175
182
  wallet_maker,
176
- tail_maker.get_tree_hash().hex(),
183
+ tail_maker.get_tree_hash(),
177
184
  None,
178
185
  authorized_providers,
179
186
  proofs_checker_maker,
@@ -181,7 +188,7 @@ async def test_cat_trades(
181
188
  new_cat_wallet_taker: CATWallet = await CRCATWallet.get_or_create_wallet_for_cat(
182
189
  wallet_node_taker.wallet_state_manager,
183
190
  wallet_taker,
184
- tail_taker.get_tree_hash().hex(),
191
+ tail_taker.get_tree_hash(),
185
192
  None,
186
193
  authorized_providers,
187
194
  proofs_checker_taker,
@@ -415,29 +422,29 @@ async def test_cat_trades(
415
422
  await env_maker.check_balances()
416
423
 
417
424
  # Create the trade parameters
418
- chia_for_cat: OfferSummary = {
425
+ chia_for_cat: OfferSpecification = {
419
426
  wallet_maker.id(): -1,
420
- bytes32.from_hexstr(new_cat_wallet_maker.get_asset_id()): 2, # This is the CAT that the taker made
427
+ new_cat_wallet_maker.get_asset_id(): 2, # This is the CAT that the taker made
421
428
  }
422
- cat_for_chia: OfferSummary = {
429
+ cat_for_chia: OfferSpecification = {
423
430
  wallet_maker.id(): 3,
424
431
  cat_wallet_maker.id(): -4, # The taker has no knowledge of this CAT yet
425
432
  }
426
- cat_for_cat: OfferSummary = {
427
- bytes32.from_hexstr(cat_wallet_maker.get_asset_id()): -5,
433
+ cat_for_cat: OfferSpecification = {
434
+ cat_wallet_maker.get_asset_id(): -5,
428
435
  new_cat_wallet_maker.id(): 6,
429
436
  }
430
- chia_for_multiple_cat: OfferSummary = {
437
+ chia_for_multiple_cat: OfferSpecification = {
431
438
  wallet_maker.id(): -7,
432
439
  cat_wallet_maker.id(): 8,
433
440
  new_cat_wallet_maker.id(): 9,
434
441
  }
435
- multiple_cat_for_chia: OfferSummary = {
442
+ multiple_cat_for_chia: OfferSpecification = {
436
443
  wallet_maker.id(): 10,
437
444
  cat_wallet_maker.id(): -11,
438
445
  new_cat_wallet_maker.id(): -12,
439
446
  }
440
- chia_and_cat_for_cat: OfferSummary = {
447
+ chia_and_cat_for_cat: OfferSpecification = {
441
448
  wallet_maker.id(): -13,
442
449
  cat_wallet_maker.id(): -14,
443
450
  new_cat_wallet_maker.id(): 15,
@@ -445,10 +452,10 @@ async def test_cat_trades(
445
452
 
446
453
  driver_dict: dict[bytes32, PuzzleInfo] = {}
447
454
  for wallet in (cat_wallet_maker, new_cat_wallet_maker):
448
- asset_id: str = wallet.get_asset_id()
455
+ asset_id = wallet.get_asset_id()
449
456
  driver_item: dict[str, Any] = {
450
457
  "type": AssetType.CAT.value,
451
- "tail": "0x" + asset_id,
458
+ "tail": "0x" + asset_id.hex(),
452
459
  }
453
460
  if credential_restricted:
454
461
  driver_item["also"] = {
@@ -460,7 +467,7 @@ async def test_cat_trades(
460
467
  else proofs_checker_taker.as_program()
461
468
  ),
462
469
  }
463
- driver_dict[bytes32.from_hexstr(asset_id)] = PuzzleInfo(driver_item)
470
+ driver_dict[asset_id] = PuzzleInfo(driver_item)
464
471
 
465
472
  trade_manager_maker = env_maker.wallet_state_manager.trade_manager
466
473
  trade_manager_taker = env_taker.wallet_state_manager.trade_manager
@@ -559,7 +566,7 @@ async def test_cat_trades(
559
566
  "pending_coin_removal_count": 1,
560
567
  "<=#spendable_balance": -2,
561
568
  "<=#max_send_amount": -2,
562
- # Unconfirmed balance doesn't change because receiveing 1 XCH and spending 1 in fee
569
+ # Unconfirmed balance doesn't change because receiving 1 XCH and spending 1 in fee
563
570
  "unconfirmed_wallet_balance": 0,
564
571
  ">=#pending_change": 1, # any amount increase
565
572
  },
@@ -586,7 +593,7 @@ async def test_cat_trades(
586
593
  "unspent_coin_count": 1,
587
594
  ">#spendable_balance": 0,
588
595
  ">#max_send_amount": 0,
589
- # Confirmed balance doesn't change because receiveing 1 XCH and spending 1 in fee
596
+ # Confirmed balance doesn't change because receiving 1 XCH and spending 1 in fee
590
597
  "confirmed_wallet_balance": 0,
591
598
  "<=#pending_change": 1, # any amount decrease
592
599
  },
@@ -613,8 +620,7 @@ async def test_cat_trades(
613
620
 
614
621
  if credential_restricted:
615
622
  await client_maker.crcat_approve_pending(
616
- new_cat_wallet_maker.id(),
617
- uint64(2),
623
+ CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(2), push=True),
618
624
  wallet_environments.tx_config,
619
625
  )
620
626
 
@@ -953,8 +959,7 @@ async def test_cat_trades(
953
959
 
954
960
  if credential_restricted:
955
961
  await client_maker.crcat_approve_pending(
956
- new_cat_wallet_maker.id(),
957
- uint64(6),
962
+ CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(6), push=True),
958
963
  wallet_environments.tx_config,
959
964
  )
960
965
 
@@ -1191,8 +1196,7 @@ async def test_cat_trades(
1191
1196
 
1192
1197
  if credential_restricted:
1193
1198
  await client_maker.crcat_approve_pending(
1194
- cat_wallet_maker.id(),
1195
- uint64(8),
1199
+ CRCATApprovePending(wallet_id=cat_wallet_maker.id(), min_amount_to_claim=uint64(8), push=True),
1196
1200
  wallet_environments.tx_config,
1197
1201
  )
1198
1202
 
@@ -1238,8 +1242,7 @@ async def test_cat_trades(
1238
1242
  )
1239
1243
 
1240
1244
  await client_maker.crcat_approve_pending(
1241
- new_cat_wallet_maker.id(),
1242
- uint64(9),
1245
+ CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(9), push=True),
1243
1246
  wallet_environments.tx_config,
1244
1247
  )
1245
1248
 
@@ -1561,8 +1564,7 @@ async def test_cat_trades(
1561
1564
 
1562
1565
  if credential_restricted:
1563
1566
  await client_maker.crcat_approve_pending(
1564
- new_cat_wallet_maker.id(),
1565
- uint64(15),
1567
+ CRCATApprovePending(wallet_id=new_cat_wallet_maker.id(), min_amount_to_claim=uint64(15), push=True),
1566
1568
  wallet_environments.tx_config,
1567
1569
  )
1568
1570
 
@@ -1673,12 +1675,12 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
1673
1675
  ]
1674
1676
  )
1675
1677
 
1676
- cat_for_chia: OfferSummary = {
1678
+ cat_for_chia: OfferSpecification = {
1677
1679
  env_maker.wallet_aliases["xch"]: 1,
1678
1680
  env_maker.wallet_aliases["cat"]: -2,
1679
1681
  }
1680
1682
 
1681
- chia_for_cat: OfferSummary = {
1683
+ chia_for_cat: OfferSpecification = {
1682
1684
  env_maker.wallet_aliases["xch"]: -3,
1683
1685
  env_maker.wallet_aliases["cat"]: 4,
1684
1686
  }
@@ -1805,7 +1807,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
1805
1807
  # This take should fail since we have no CATs to fulfill it with
1806
1808
  with pytest.raises(
1807
1809
  ValueError,
1808
- match=f"Do not have a wallet for asset ID: {cat_wallet_maker.get_asset_id()} to fulfill offer",
1810
+ match=f"Do not have a wallet for asset ID: {cat_wallet_maker.get_asset_id().hex()} to fulfill offer",
1809
1811
  ):
1810
1812
  async with env_taker.wallet_state_manager.new_action_scope(
1811
1813
  wallet_environments.tx_config, push=False
@@ -1846,7 +1848,7 @@ async def test_trade_cancellation(wallet_environments: WalletTestFramework, wall
1846
1848
  await time_out_assert(15, get_trade_and_status, TradeStatus.CANCELLED, trade_manager_maker, trade_make)
1847
1849
 
1848
1850
  # Now let's test the case where two coins need to be spent in order to cancel
1849
- chia_and_cat_for_something: OfferSummary = {
1851
+ chia_and_cat_for_something: OfferSpecification = {
1850
1852
  env_maker.wallet_aliases["xch"]: -5,
1851
1853
  env_maker.wallet_aliases["cat"]: -6,
1852
1854
  bytes32.zeros: 1, # Doesn't matter
@@ -1991,7 +1993,7 @@ async def test_trade_conflict(wallet_environments: WalletTestFramework, wallet_t
1991
1993
  ]
1992
1994
  )
1993
1995
 
1994
- cat_for_chia: OfferSummary = {
1996
+ cat_for_chia: OfferSpecification = {
1995
1997
  env_maker.wallet_aliases["xch"]: 1000,
1996
1998
  env_maker.wallet_aliases["cat"]: -4,
1997
1999
  }
@@ -2182,7 +2184,7 @@ async def test_trade_bad_spend(wallet_environments: WalletTestFramework, wallet_
2182
2184
  ]
2183
2185
  )
2184
2186
 
2185
- cat_for_chia: OfferSummary = {
2187
+ cat_for_chia: OfferSpecification = {
2186
2188
  env_maker.wallet_aliases["xch"]: 1000,
2187
2189
  env_maker.wallet_aliases["cat"]: -4,
2188
2190
  }
@@ -2304,7 +2306,7 @@ async def test_trade_high_fee(wallet_environments: WalletTestFramework, wallet_t
2304
2306
  ]
2305
2307
  )
2306
2308
 
2307
- cat_for_chia: OfferSummary = {
2309
+ cat_for_chia: OfferSpecification = {
2308
2310
  env_maker.wallet_aliases["xch"]: 1000,
2309
2311
  env_maker.wallet_aliases["cat"]: -4,
2310
2312
  }
@@ -2449,15 +2451,15 @@ async def test_aggregated_trade_state(wallet_environments: WalletTestFramework,
2449
2451
  ]
2450
2452
  )
2451
2453
 
2452
- cat_for_chia: OfferSummary = {
2454
+ cat_for_chia: OfferSpecification = {
2453
2455
  env_maker.wallet_aliases["xch"]: 2,
2454
2456
  env_maker.wallet_aliases["cat"]: -2,
2455
2457
  }
2456
- chia_for_cat: OfferSummary = {
2458
+ chia_for_cat: OfferSpecification = {
2457
2459
  env_maker.wallet_aliases["xch"]: -1,
2458
2460
  env_maker.wallet_aliases["cat"]: 1,
2459
2461
  }
2460
- combined_summary: OfferSummary = {
2462
+ combined_summary: OfferSpecification = {
2461
2463
  env_maker.wallet_aliases["xch"]: cat_for_chia[env_maker.wallet_aliases["xch"]]
2462
2464
  + chia_for_cat[env_maker.wallet_aliases["xch"]],
2463
2465
  env_maker.wallet_aliases["cat"]: cat_for_chia[env_maker.wallet_aliases["cat"]]
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  import pytest
6
4
  from chia_rs import AugSchemeMPL, CoinSpend, G1Element, G2Element, PrivateKey
7
5
  from chia_rs.sized_bytes import bytes32
@@ -48,8 +46,8 @@ async def do_spend(
48
46
  sim: SpendSim,
49
47
  sim_client: SimClient,
50
48
  spend_bundle: WalletSpendBundle,
51
- expected_result: tuple[MempoolInclusionStatus, Optional[Err]],
52
- cost_logger: Optional[CostLogger] = None,
49
+ expected_result: tuple[MempoolInclusionStatus, Err | None],
50
+ cost_logger: CostLogger | None = None,
53
51
  cost_log_msg: str = "",
54
52
  ) -> int:
55
53
  if cost_logger is not None:
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import contextlib
4
4
  import unittest
5
- from collections.abc import AsyncIterator, Awaitable
5
+ from collections.abc import AsyncIterator, Awaitable, Callable
6
6
  from contextlib import AsyncExitStack
7
7
  from dataclasses import replace
8
- from typing import Any, Callable, Optional
8
+ from typing import Any
9
9
 
10
10
  import pytest
11
11
  from chia_rs import (
@@ -34,7 +34,7 @@ from chia.wallet.wallet_state_manager import WalletStateManager
34
34
  @pytest.fixture(scope="function", autouse=True)
35
35
  def block_is_current_at(monkeypatch: pytest.MonkeyPatch) -> None:
36
36
  def make_new_synced(func: Callable[..., Awaitable[bool]]) -> Any:
37
- async def mocked_synced(self: Any, block_is_current_at: Optional[uint64] = uint64(0)) -> bool:
37
+ async def mocked_synced(self: Any, block_is_current_at: uint64 | None = uint64(0)) -> bool:
38
38
  return await func(self, block_is_current_at)
39
39
 
40
40
  return mocked_synced
@@ -83,11 +83,11 @@ async def ignore_block_validation(
83
83
  return new_create
84
84
 
85
85
  def run_block(
86
- block: FullBlock, prev_generators: list[bytes], constants: ConsensusConstants
87
- ) -> tuple[Optional[int], Optional[SpendBundleConditions]]:
86
+ block: FullBlock, prev_generators: list[bytes], prev_tx_height: uint32, constants: ConsensusConstants
87
+ ) -> tuple[int | None, SpendBundleConditions | None]:
88
88
  assert block.transactions_generator is not None
89
89
  assert block.transactions_info is not None
90
- flags = get_flags_for_height_and_constants(block.height, constants) | DONT_VALIDATE_SIGNATURE
90
+ flags = get_flags_for_height_and_constants(prev_tx_height, constants) | DONT_VALIDATE_SIGNATURE
91
91
  if block.height >= constants.HARD_FORK_HEIGHT:
92
92
  run_block = run_block_generator2
93
93
  else:
@@ -31,7 +31,7 @@ ACS = Program.fromhex(
31
31
  )
32
32
  ACS_PH = ACS.get_tree_hash()
33
33
 
34
- NIL_PH = Program.to(None).get_tree_hash()
34
+ NIL_PH = Program.NIL.get_tree_hash()
35
35
 
36
36
 
37
37
  @pytest.mark.anyio
@@ -8,7 +8,7 @@ from chia_rs.sized_ints import uint64
8
8
 
9
9
  from chia._tests.environments.wallet import WalletStateTransition, WalletTestFramework
10
10
  from chia._tests.util.time_out_assert import time_out_assert
11
- from chia.data_layer.data_layer_wallet import DataLayerWallet
11
+ from chia.data_layer.data_layer_wallet import DataLayerSummary, DataLayerWallet, SingletonDependencies, SingletonSummary
12
12
  from chia.wallet.puzzle_drivers import Solver
13
13
  from chia.wallet.trade_record import TradeRecord
14
14
  from chia.wallet.trading.offer import Offer
@@ -179,20 +179,20 @@ async def test_dl_offers(wallet_environments: WalletTestFramework) -> None:
179
179
  assert success is True
180
180
  assert offer_maker is not None
181
181
 
182
- assert await trade_manager_taker.get_offer_summary(Offer.from_bytes(offer_maker.offer)) == {
183
- "offered": [
184
- {
185
- "launcher_id": launcher_id_maker.hex(),
186
- "new_root": maker_root.hex(),
187
- "dependencies": [
188
- {
189
- "launcher_id": launcher_id_taker.hex(),
190
- "values_to_prove": [taker_branch.hex()],
191
- }
182
+ assert await trade_manager_taker.get_dl_offer_summary(Offer.from_bytes(offer_maker.offer)) == DataLayerSummary(
183
+ offered=[
184
+ SingletonSummary(
185
+ launcher_id=launcher_id_maker,
186
+ new_root=maker_root,
187
+ dependencies=[
188
+ SingletonDependencies(
189
+ launcher_id=launcher_id_taker,
190
+ values_to_prove=[taker_branch],
191
+ )
192
192
  ],
193
- }
193
+ )
194
194
  ]
195
- }
195
+ )
196
196
 
197
197
  [_maker_offer], signing_response = await wsm_maker.sign_offers([Offer.from_bytes(offer_maker.offer)])
198
198
  async with trade_manager_taker.wallet_state_manager.new_action_scope(
@@ -231,30 +231,30 @@ async def test_dl_offers(wallet_environments: WalletTestFramework) -> None:
231
231
  )
232
232
  assert offer_taker is not None
233
233
 
234
- assert await trade_manager_maker.get_offer_summary(Offer.from_bytes(offer_taker.offer)) == {
235
- "offered": [
236
- {
237
- "launcher_id": launcher_id_maker.hex(),
238
- "new_root": maker_root.hex(),
239
- "dependencies": [
240
- {
241
- "launcher_id": launcher_id_taker.hex(),
242
- "values_to_prove": [taker_branch.hex()],
243
- }
234
+ assert await trade_manager_maker.get_dl_offer_summary(Offer.from_bytes(offer_taker.offer)) == DataLayerSummary(
235
+ offered=[
236
+ SingletonSummary(
237
+ launcher_id=launcher_id_maker,
238
+ new_root=maker_root,
239
+ dependencies=[
240
+ SingletonDependencies(
241
+ launcher_id=launcher_id_taker,
242
+ values_to_prove=[taker_branch],
243
+ )
244
244
  ],
245
- },
246
- {
247
- "launcher_id": launcher_id_taker.hex(),
248
- "new_root": taker_root.hex(),
249
- "dependencies": [
250
- {
251
- "launcher_id": launcher_id_maker.hex(),
252
- "values_to_prove": [maker_branch.hex()],
253
- }
245
+ ),
246
+ SingletonSummary(
247
+ launcher_id=launcher_id_taker,
248
+ new_root=taker_root,
249
+ dependencies=[
250
+ SingletonDependencies(
251
+ launcher_id=launcher_id_maker,
252
+ values_to_prove=[maker_branch],
253
+ ),
254
254
  ],
255
- },
255
+ ),
256
256
  ]
257
- }
257
+ )
258
258
 
259
259
  await wallet_environments.process_pending_states(
260
260
  [
@@ -34,7 +34,14 @@ from chia.wallet.util.wallet_types import WalletType
34
34
  from chia.wallet.wallet import Wallet
35
35
  from chia.wallet.wallet_action_scope import WalletActionScope
36
36
  from chia.wallet.wallet_node import WalletNode
37
- from chia.wallet.wallet_request_types import DIDFindLostDID, DIDGetCurrentCoinInfo, DIDGetInfo
37
+ from chia.wallet.wallet_request_types import (
38
+ CreateNewWallet,
39
+ CreateNewWalletType,
40
+ DIDFindLostDID,
41
+ DIDGetCurrentCoinInfo,
42
+ DIDGetInfo,
43
+ DIDType,
44
+ )
38
45
  from chia.wallet.wallet_rpc_api import WalletRpcApi
39
46
 
40
47
 
@@ -284,11 +291,14 @@ async def test_creation_from_backup_file(wallet_environments: WalletTestFramewor
284
291
  backup_data = did_wallet_1.create_backup()
285
292
 
286
293
  # Wallet2 recovers DIDWallet2 to a new set of keys
287
- await env_2.rpc_client.create_new_did_wallet(
288
- uint64(1),
289
- DEFAULT_TX_CONFIG,
290
- type="recovery",
291
- backup_data=backup_data,
294
+ await env_2.rpc_client.create_new_wallet(
295
+ CreateNewWallet(
296
+ wallet_type=CreateNewWalletType.DID_WALLET,
297
+ did_type=DIDType.RECOVERY,
298
+ backup_data=backup_data,
299
+ push=True,
300
+ ),
301
+ wallet_environments.tx_config,
292
302
  )
293
303
  did_wallet_2 = env_2.wallet_state_manager.get_wallet(id=uint32(2), required_type=DIDWallet)
294
304
  current_coin_info_response = await env_0.rpc_client.did_get_current_coin_info(