chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.5.8rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +6 -6
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +15 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from collections.abc import Iterator
4
- from typing import Optional
5
4
 
6
5
  from chia_puzzles_py.programs import (
7
6
  P2_SINGLETON,
@@ -238,7 +237,7 @@ def launch_conditions_and_coinsol(
238
237
  def lineage_proof_for_coinsol(coin_spend: CoinSpend) -> LineageProof:
239
238
  parent_name: bytes32 = coin_spend.coin.parent_coin_info
240
239
 
241
- inner_puzzle_hash: Optional[bytes32] = None
240
+ inner_puzzle_hash: bytes32 | None = None
242
241
  if coin_spend.coin.puzzle_hash != SINGLETON_LAUNCHER_HASH:
243
242
  full_puzzle = Program.from_bytes(bytes(coin_spend.puzzle_reveal))
244
243
  r = full_puzzle.uncurry()
@@ -321,8 +320,8 @@ def claim_p2_singleton(
321
320
  p2_singleton_coin: Coin,
322
321
  singleton_inner_puzhash: bytes32,
323
322
  launcher_id: bytes32,
324
- delay_time: Optional[uint64] = None,
325
- delay_ph: Optional[bytes32] = None,
323
+ delay_time: uint64 | None = None,
324
+ delay_ph: bytes32 | None = None,
326
325
  ) -> tuple[Program, Program, CoinSpend]:
327
326
  assertion = Program.to([ConditionOpcode.ASSERT_COIN_ANNOUNCEMENT, std_hash(p2_singleton_coin.name() + b"$")])
328
327
  announcement = Program.to([ConditionOpcode.CREATE_PUZZLE_ANNOUNCEMENT, p2_singleton_coin.name()])
@@ -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
  from chia_puzzles_py.programs import (
6
6
  DELEGATED_TAIL,
@@ -98,7 +98,7 @@ class GenesisById(LimitationsProgram):
98
98
  tail: Program = cls.construct([Program.to(origin_id)])
99
99
 
100
100
  wallet.lineage_store = await CATLineageStore.create(
101
- wallet.wallet_state_manager.db_wrapper, tail.get_tree_hash().hex()
101
+ wallet.wallet_state_manager.db_wrapper, tail.get_tree_hash()
102
102
  )
103
103
  await wallet.add_lineage(origin_id, LineageProof())
104
104
 
@@ -229,7 +229,7 @@ ALL_LIMITATIONS_PROGRAMS: dict[str, Any] = {
229
229
  }
230
230
 
231
231
 
232
- def match_limitations_program(limitations_program: Program) -> tuple[Optional[LimitationsProgram], list[Program]]:
232
+ def match_limitations_program(limitations_program: Program) -> tuple[LimitationsProgram | None, list[Program]]:
233
233
  uncurried_mod, curried_args = limitations_program.uncurry()
234
234
  for key, lp in ALL_LIMITATIONS_PROGRAMS.items():
235
235
  matched, args = lp.match(uncurried_mod, curried_args)
chia/wallet/singleton.py CHANGED
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional, Union
4
-
5
3
  from chia_puzzles_py.programs import (
6
4
  SINGLETON_LAUNCHER,
7
5
  SINGLETON_LAUNCHER_HASH,
@@ -31,7 +29,7 @@ SINGLETON_LAUNCHER_PUZZLE_HASH = bytes32(SINGLETON_LAUNCHER_HASH)
31
29
  SINGLETON_LAUNCHER_PUZZLE_HASH_TREE_HASH = shatree_atom(SINGLETON_LAUNCHER_PUZZLE_HASH)
32
30
 
33
31
 
34
- def get_inner_puzzle_from_singleton(puzzle: Union[Program, SerializedProgram]) -> Optional[Program]:
32
+ def get_inner_puzzle_from_singleton(puzzle: Program | SerializedProgram) -> Program | None:
35
33
  """
36
34
  Extract the inner puzzle of a singleton
37
35
  :param puzzle: Singleton puzzle
@@ -47,7 +45,7 @@ def get_inner_puzzle_from_singleton(puzzle: Union[Program, SerializedProgram]) -
47
45
  return Program(INNER_PUZZLE)
48
46
 
49
47
 
50
- def get_singleton_id_from_puzzle(puzzle: Union[Program, SerializedProgram]) -> Optional[bytes32]:
48
+ def get_singleton_id_from_puzzle(puzzle: Program | SerializedProgram) -> bytes32 | None:
51
49
  """
52
50
  Extract the singleton ID from a singleton puzzle
53
51
  :param puzzle: Singleton puzzle
@@ -63,7 +61,7 @@ def get_singleton_id_from_puzzle(puzzle: Union[Program, SerializedProgram]) -> O
63
61
  return bytes32(Program(SINGLETON_STRUCT).rest().first().as_atom())
64
62
 
65
63
 
66
- def is_singleton(inner_f: Union[Program, SerializedProgram]) -> bool:
64
+ def is_singleton(inner_f: Program | SerializedProgram) -> bool:
67
65
  """
68
66
  Check if a puzzle is a singleton mod
69
67
  :param inner_f: puzzle
@@ -88,7 +86,7 @@ def create_singleton_puzzle_hash(innerpuz_hash: bytes32, launcher_id: bytes32) -
88
86
  return curry_and_treehash(SINGLETON_TOP_LAYER_MOD_HASH_QUOTED, singleton_struct, innerpuz_hash)
89
87
 
90
88
 
91
- def create_singleton_puzzle(innerpuz: Union[Program, SerializedProgram], launcher_id: bytes32) -> Program:
89
+ def create_singleton_puzzle(innerpuz: Program | SerializedProgram, launcher_id: bytes32) -> Program:
92
90
  """
93
91
  Create a full Singleton puzzle
94
92
  :param innerpuz: Singleton inner puzzle
@@ -100,7 +98,7 @@ def create_singleton_puzzle(innerpuz: Union[Program, SerializedProgram], launche
100
98
  return SINGLETON_TOP_LAYER_MOD.curry(singleton_struct, innerpuz)
101
99
 
102
100
 
103
- def get_most_recent_singleton_coin_from_coin_spend(coin_sol: CoinSpend) -> Optional[Coin]:
101
+ def get_most_recent_singleton_coin_from_coin_spend(coin_sol: CoinSpend) -> Coin | None:
104
102
  additions: list[Coin] = compute_additions(coin_sol)
105
103
  for coin in additions:
106
104
  if coin.amount % 2 == 1:
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Any, Optional
4
+ from typing import Any
5
5
 
6
6
  from chia_rs import CoinSpend
7
7
  from chia_rs.sized_bytes import bytes32
@@ -21,11 +21,11 @@ class SingletonRecord:
21
21
  singleton_id: bytes32
22
22
  wallet_id: uint32
23
23
  parent_coinspend: CoinSpend
24
- inner_puzzle_hash: Optional[bytes32]
24
+ inner_puzzle_hash: bytes32 | None
25
25
  pending: bool
26
26
  removed_height: int
27
27
  lineage_proof: LineageProof
28
- custom_data: Optional[Any]
28
+ custom_data: Any | None
29
29
 
30
30
  def name(self) -> bytes32: # pragma: no cover
31
31
  return self.coin.name()
@@ -4,11 +4,11 @@ import os
4
4
  import pathlib
5
5
  import sys
6
6
  from multiprocessing import freeze_support
7
- from typing import Any, Optional
7
+ from typing import Any
8
8
 
9
9
  from chia_rs import ConsensusConstants
10
10
 
11
- from chia.apis import ApiProtocolRegistry
11
+ from chia.apis import StubMetadataRegistry
12
12
  from chia.consensus.constants import replace_str_to_bytes
13
13
  from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
14
14
  from chia.protocols.outbound_message import NodeType
@@ -36,7 +36,7 @@ def create_wallet_service(
36
36
  root_path: pathlib.Path,
37
37
  config: dict[str, Any],
38
38
  consensus_constants: ConsensusConstants,
39
- keychain: Optional[Keychain] = None,
39
+ keychain: Keychain | None = None,
40
40
  connect_to_daemon: bool = True,
41
41
  ) -> WalletService:
42
42
  service_config = config[SERVICE_NAME]
@@ -55,7 +55,7 @@ def create_wallet_service(
55
55
  )
56
56
  peer_api = WalletNodeAPI(node)
57
57
 
58
- rpc_info: Optional[RpcInfo[WalletRpcApi]] = None
58
+ rpc_info: RpcInfo[WalletRpcApi] | None = None
59
59
  if service_config.get("start_rpc_server", True):
60
60
  rpc_info = (WalletRpcApi, service_config["rpc_port"])
61
61
 
@@ -72,7 +72,7 @@ def create_wallet_service(
72
72
  network_id=network_id,
73
73
  rpc_info=rpc_info,
74
74
  connect_to_daemon=connect_to_daemon,
75
- class_for_type=ApiProtocolRegistry,
75
+ stub_metadata_for_type=StubMetadataRegistry,
76
76
  )
77
77
 
78
78
 
@@ -4,14 +4,13 @@ import dataclasses
4
4
  import logging
5
5
  import time
6
6
  from collections import deque
7
- from typing import TYPE_CHECKING, Any, Optional, Union
7
+ from typing import TYPE_CHECKING, Any, Literal
8
8
 
9
9
  from chia_rs import CoinState
10
10
  from chia_rs.sized_bytes import bytes32
11
11
  from chia_rs.sized_ints import uint32, uint64
12
- from typing_extensions import Literal
13
12
 
14
- from chia.data_layer.data_layer_wallet import DataLayerWallet
13
+ from chia.data_layer.data_layer_wallet import DataLayerSummary, DataLayerWallet
15
14
  from chia.server.ws_connection import WSChiaConnection
16
15
  from chia.types.blockchain_format.coin import Coin, coin_as_list
17
16
  from chia.types.blockchain_format.program import Program, run
@@ -94,13 +93,13 @@ class TradeManager:
94
93
  wallet_state_manager: WalletStateManager
95
94
  log: logging.Logger
96
95
  trade_store: TradeStore
97
- most_recently_deserialized_trade: Optional[tuple[bytes32, Offer]]
96
+ most_recently_deserialized_trade: tuple[bytes32, Offer] | None
98
97
 
99
98
  @staticmethod
100
99
  async def create(
101
100
  wallet_state_manager: Any,
102
101
  db_wrapper: DBWrapper2,
103
- name: Optional[str] = None,
102
+ name: str | None = None,
104
103
  ) -> TradeManager:
105
104
  self = TradeManager()
106
105
  if name:
@@ -140,7 +139,7 @@ class TradeManager:
140
139
  return trades_by_coin
141
140
 
142
141
  async def coins_of_interest_farmed(
143
- self, coin_state: CoinState, fork_height: Optional[uint32], peer: WSChiaConnection
142
+ self, coin_state: CoinState, fork_height: uint32 | None, peer: WSChiaConnection
144
143
  ) -> None:
145
144
  """
146
145
  If both our coins and other coins in trade got removed that means that trade was successfully executed
@@ -233,7 +232,7 @@ class TradeManager:
233
232
  all: list[TradeRecord] = await self.trade_store.get_all_trades()
234
233
  return all
235
234
 
236
- async def get_trade_by_id(self, trade_id: bytes32) -> Optional[TradeRecord]:
235
+ async def get_trade_by_id(self, trade_id: bytes32) -> TradeRecord | None:
237
236
  record = await self.trade_store.get_trade_record(trade_id)
238
237
  return record
239
238
 
@@ -421,15 +420,15 @@ class TradeManager:
421
420
 
422
421
  async def create_offer_for_ids(
423
422
  self,
424
- offer: dict[Union[int, bytes32], int],
423
+ offer: dict[int | bytes32, int],
425
424
  action_scope: WalletActionScope,
426
- driver_dict: Optional[dict[bytes32, PuzzleInfo]] = None,
427
- solver: Optional[Solver] = None,
425
+ driver_dict: dict[bytes32, PuzzleInfo] | None = None,
426
+ solver: Solver | None = None,
428
427
  fee: uint64 = uint64(0),
429
428
  validate_only: bool = False,
430
429
  extra_conditions: tuple[Condition, ...] = tuple(),
431
430
  taking: bool = False,
432
- ) -> Union[tuple[Literal[True], TradeRecord, None], tuple[Literal[False], None, str]]:
431
+ ) -> tuple[Literal[True], TradeRecord, None]:
433
432
  if driver_dict is None:
434
433
  driver_dict = {}
435
434
  if solver is None:
@@ -471,14 +470,14 @@ class TradeManager:
471
470
 
472
471
  async def _create_offer_for_ids(
473
472
  self,
474
- offer_dict: dict[Union[int, bytes32], int],
473
+ offer_dict: dict[int | bytes32, int],
475
474
  action_scope: WalletActionScope,
476
- driver_dict: Optional[dict[bytes32, PuzzleInfo]] = None,
477
- solver: Optional[Solver] = None,
475
+ driver_dict: dict[bytes32, PuzzleInfo] | None = None,
476
+ solver: Solver | None = None,
478
477
  fee: uint64 = uint64(0),
479
478
  extra_conditions: tuple[Condition, ...] = tuple(),
480
479
  taking: bool = False,
481
- ) -> Union[tuple[Literal[True], Offer, None], tuple[Literal[False], None, str]]:
480
+ ) -> tuple[Literal[True], Offer, None] | tuple[Literal[False], None, str]:
482
481
  """
483
482
  Offer is dictionary of wallet ids and amount
484
483
  """
@@ -487,11 +486,11 @@ class TradeManager:
487
486
  if solver is None:
488
487
  solver = Solver({})
489
488
  try:
490
- coins_to_offer: dict[Union[int, bytes32], set[Coin]] = {}
491
- requested_payments: dict[Optional[bytes32], list[CreateCoin]] = {}
492
- offer_dict_no_ints: dict[Optional[bytes32], int] = {}
489
+ coins_to_offer: dict[int | bytes32, set[Coin]] = {}
490
+ requested_payments: dict[bytes32 | None, list[CreateCoin]] = {}
491
+ offer_dict_no_ints: dict[bytes32 | None, int] = {}
493
492
  for id, amount in offer_dict.items():
494
- asset_id: Optional[bytes32] = None
493
+ asset_id: bytes32 | None = None
495
494
  # asset_id can either be none if asset is XCH or
496
495
  # bytes32 if another asset (e.g. NFT, CAT)
497
496
  if amount > 0:
@@ -505,7 +504,7 @@ class TradeManager:
505
504
  if wallet.type() != WalletType.STANDARD_WALLET:
506
505
  if callable(getattr(wallet, "get_asset_id", None)): # ATTENTION: new wallets
507
506
  assert isinstance(wallet, CATWallet)
508
- asset_id = bytes32(bytes.fromhex(wallet.get_asset_id()))
507
+ asset_id = wallet.get_asset_id()
509
508
  memos = [p2_ph]
510
509
  else:
511
510
  raise ValueError(
@@ -513,7 +512,7 @@ class TradeManager:
513
512
  )
514
513
  else:
515
514
  asset_id = id
516
- wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id.hex())
515
+ wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
517
516
  memos = [p2_ph]
518
517
  requested_payments[asset_id] = [CreateCoin(p2_ph, uint64(amount), memos)]
519
518
  elif amount < 0:
@@ -524,14 +523,14 @@ class TradeManager:
524
523
  if wallet.type() != WalletType.STANDARD_WALLET:
525
524
  if callable(getattr(wallet, "get_asset_id", None)): # ATTENTION: new wallets
526
525
  assert isinstance(wallet, CATWallet)
527
- asset_id = bytes32(bytes.fromhex(wallet.get_asset_id()))
526
+ asset_id = wallet.get_asset_id()
528
527
  else:
529
528
  raise ValueError(
530
529
  f"Cannot offer assets from wallet id {wallet.id()} without more information"
531
530
  )
532
531
  else:
533
532
  asset_id = id
534
- wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id.hex())
533
+ wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
535
534
  assert wallet is not None
536
535
  if not callable(getattr(wallet, "get_coins_to_offer", None)): # ATTENTION: new wallets
537
536
  raise ValueError(f"Cannot offer coins from wallet id {wallet.id()}")
@@ -579,7 +578,7 @@ class TradeManager:
579
578
  requested_payments, driver_dict, taking
580
579
  )
581
580
 
582
- potential_special_offer: Optional[Offer] = await self.check_for_special_offer_making(
581
+ potential_special_offer: Offer | None = await self.check_for_special_offer_making(
583
582
  offer_dict_no_ints,
584
583
  driver_dict,
585
584
  action_scope,
@@ -592,7 +591,7 @@ class TradeManager:
592
591
  return True, potential_special_offer, None
593
592
 
594
593
  all_coins: list[Coin] = [c for coins in coins_to_offer.values() for c in coins]
595
- notarized_payments: dict[Optional[bytes32], list[NotarizedPayment]] = Offer.notarize_payments(
594
+ notarized_payments: dict[bytes32 | None, list[NotarizedPayment]] = Offer.notarize_payments(
596
595
  requested_payments, all_coins
597
596
  )
598
597
  announcements_to_assert = Offer.calculate_announcements(notarized_payments, driver_dict)
@@ -606,7 +605,7 @@ class TradeManager:
606
605
  if isinstance(id, int):
607
606
  wallet = self.wallet_state_manager.wallets.get(uint32(id))
608
607
  else:
609
- wallet = await self.wallet_state_manager.get_wallet_for_asset_id(id.hex())
608
+ wallet = await self.wallet_state_manager.get_wallet_for_asset_id(id)
610
609
  async with self.wallet_state_manager.new_action_scope(
611
610
  action_scope.config.tx_config, push=False
612
611
  ) as inner_action_scope:
@@ -815,23 +814,23 @@ class TradeManager:
815
814
  offer: Offer,
816
815
  peer: WSChiaConnection,
817
816
  action_scope: WalletActionScope,
818
- solver: Optional[Solver] = None,
817
+ solver: Solver | None = None,
819
818
  fee: uint64 = uint64(0),
820
819
  extra_conditions: tuple[Condition, ...] = tuple(),
821
820
  ) -> TradeRecord:
822
821
  if solver is None:
823
822
  solver = Solver({})
824
- take_offer_dict: dict[Union[bytes32, int], int] = {}
825
- arbitrage: dict[Optional[bytes32], int] = offer.arbitrage()
823
+ take_offer_dict: dict[bytes32 | int, int] = {}
824
+ arbitrage: dict[bytes32 | None, int] = offer.arbitrage()
826
825
 
827
826
  for asset_id, amount in arbitrage.items():
828
827
  if asset_id is None:
829
- wallet: Optional[WalletProtocol[Any]] = self.wallet_state_manager.main_wallet
828
+ wallet: WalletProtocol[Any] | None = self.wallet_state_manager.main_wallet
830
829
  assert wallet is not None
831
- key: Union[bytes32, int] = int(wallet.id())
830
+ key: bytes32 | int = int(wallet.id())
832
831
  else:
833
832
  # ATTENTION: new wallets
834
- wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id.hex())
833
+ wallet = await self.wallet_state_manager.get_wallet_for_asset_id(asset_id)
835
834
  if wallet is None and amount < 0:
836
835
  raise ValueError(f"Do not have a wallet for asset ID: {asset_id} to fulfill offer")
837
836
  elif wallet is None or wallet.type() in {WalletType.NFT, WalletType.DATA_LAYER}:
@@ -909,13 +908,13 @@ class TradeManager:
909
908
 
910
909
  async def check_for_special_offer_making(
911
910
  self,
912
- offer_dict: dict[Optional[bytes32], int],
911
+ offer_dict: dict[bytes32 | None, int],
913
912
  driver_dict: dict[bytes32, PuzzleInfo],
914
913
  action_scope: WalletActionScope,
915
914
  solver: Solver,
916
915
  fee: uint64 = uint64(0),
917
916
  extra_conditions: tuple[Condition, ...] = tuple(),
918
- ) -> Optional[Offer]:
917
+ ) -> Offer | None:
919
918
  for puzzle_info in driver_dict.values():
920
919
  if (
921
920
  puzzle_info.check_type([AssetType.SINGLETON.value, AssetType.METADATA.value, AssetType.OWNERSHIP.value])
@@ -966,7 +965,7 @@ class TradeManager:
966
965
  return True
967
966
  return False
968
967
 
969
- async def get_offer_summary(self, offer: Offer) -> dict[str, Any]:
968
+ async def get_dl_offer_summary(self, offer: Offer) -> DataLayerSummary | None:
970
969
  for puzzle_info in offer.driver_dict.values():
971
970
  if (
972
971
  puzzle_info.check_type(
@@ -978,27 +977,7 @@ class TradeManager:
978
977
  and puzzle_info.also()["updater_hash"] == ACS_MU_PH # type: ignore
979
978
  ):
980
979
  return await DataLayerWallet.get_offer_summary(offer)
981
- # Otherwise just return the same thing as the RPC normally does
982
- offered, requested, infos, valid_times = offer.summary()
983
- return {
984
- "offered": offered,
985
- "requested": requested,
986
- "fees": offer.fees(),
987
- "additions": [c.name().hex() for c in offer.additions()],
988
- "removals": [c.name().hex() for c in offer.removals()],
989
- "infos": infos,
990
- "valid_times": {
991
- k: v
992
- for k, v in valid_times.to_json_dict().items()
993
- if k
994
- not in {
995
- "max_secs_after_created",
996
- "min_secs_since_created",
997
- "max_blocks_after_created",
998
- "min_blocks_since_created",
999
- }
1000
- },
1001
- }
980
+ return None
1002
981
 
1003
982
  async def check_for_final_modifications(
1004
983
  self, offer: Offer, solver: Solver, action_scope: WalletActionScope
@@ -1031,10 +1010,10 @@ class TradeManager:
1031
1010
 
1032
1011
  async def check_for_requested_payment_modifications(
1033
1012
  self,
1034
- requested_payments: dict[Optional[bytes32], list[CreateCoin]],
1013
+ requested_payments: dict[bytes32 | None, list[CreateCoin]],
1035
1014
  driver_dict: dict[bytes32, PuzzleInfo],
1036
1015
  taking: bool,
1037
- ) -> dict[Optional[bytes32], list[CreateCoin]]:
1016
+ ) -> dict[bytes32 | None, list[CreateCoin]]:
1038
1017
  # This function exclusively deals with CR-CATs for now
1039
1018
  if not taking:
1040
1019
  for asset_id, puzzle_info in driver_dict.items():
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Any, Optional
4
+ from typing import Any
5
5
 
6
6
  from chia_rs.sized_bytes import bytes32
7
7
  from chia_rs.sized_ints import uint8, uint32, uint64
@@ -22,16 +22,16 @@ class TradeRecordOld(Streamable):
22
22
  """
23
23
 
24
24
  confirmed_at_index: uint32
25
- accepted_at_time: Optional[uint64]
25
+ accepted_at_time: uint64 | None
26
26
  created_at_time: uint64
27
27
  is_my_offer: bool
28
28
  sent: uint32
29
29
  offer: bytes
30
- taken_offer: Optional[bytes]
30
+ taken_offer: bytes | None
31
31
  coins_of_interest: list[Coin]
32
32
  trade_id: bytes32
33
33
  status: uint32 # TradeStatus, enum not streamable
34
- sent_to: list[tuple[str, uint8, Optional[str]]] # MempoolSubmissionStatus.status enum not streamable
34
+ sent_to: list[tuple[str, uint8, str | None]] # MempoolSubmissionStatus.status enum not streamable
35
35
 
36
36
  def to_json_dict_convenience(self) -> dict[str, Any]:
37
37
  formatted = self.to_json_dict()