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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +12 -7
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +16 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc3.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -9,13 +9,14 @@ from chia_rs.sized_ints import uint32, uint64
9
9
  from chia._tests.cmds.cmd_test_utils import TestRpcClients, TestWalletRpcClient, logType, run_cli_command_and_assert
10
10
  from chia._tests.cmds.wallet.test_consts import FINGERPRINT_ARG, STD_TX, STD_UTX, get_bytes32
11
11
  from chia.util.bech32m import encode_puzzle_hash
12
- from chia.wallet.conditions import ConditionValidTimes
12
+ from chia.wallet.conditions import Condition, ConditionValidTimes
13
13
  from chia.wallet.lineage_proof import LineageProof
14
- from chia.wallet.transaction_record import TransactionRecord
15
14
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
16
15
  from chia.wallet.vc_wallet.vc_drivers import VCLineageProof, VerifiedCredential
17
16
  from chia.wallet.vc_wallet.vc_store import VCRecord
18
17
  from chia.wallet.wallet_request_types import (
18
+ CRCATApprovePending,
19
+ CRCATApprovePendingResponse,
19
20
  GetWallets,
20
21
  VCAddProofs,
21
22
  VCGet,
@@ -335,25 +336,23 @@ def test_vcs_approve_r_cats(capsys: object, get_test_cli_clients: tuple[TestRpcC
335
336
  class VcsApproveRCATSRpcClient(TestWalletRpcClient):
336
337
  async def crcat_approve_pending(
337
338
  self,
338
- wallet_id: uint32,
339
- min_amount_to_claim: uint64,
339
+ request: CRCATApprovePending,
340
340
  tx_config: TXConfig,
341
- fee: uint64 = uint64(0),
342
- push: bool = True,
341
+ extra_conditions: tuple[Condition, ...] = tuple(),
343
342
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
344
- ) -> list[TransactionRecord]:
343
+ ) -> CRCATApprovePendingResponse:
345
344
  self.add_to_log(
346
345
  "crcat_approve_pending",
347
346
  (
348
- wallet_id,
349
- min_amount_to_claim,
347
+ request.wallet_id,
348
+ request.min_amount_to_claim,
350
349
  tx_config,
351
- fee,
352
- push,
350
+ request.fee,
351
+ request.push,
353
352
  timelock_info,
354
353
  ),
355
354
  )
356
- return [STD_TX]
355
+ return CRCATApprovePendingResponse([STD_UTX], [STD_TX])
357
356
 
358
357
  inst_rpc_client = VcsApproveRCATSRpcClient()
359
358
  test_rpc_clients.wallet_rpc_client = inst_rpc_client
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import datetime
4
4
  import os
5
5
  from pathlib import Path
6
- from typing import Any, Optional, Union
6
+ from typing import Any
7
7
 
8
8
  import importlib_resources
9
9
  import pytest
@@ -29,6 +29,7 @@ from chia.protocols.outbound_message import NodeType
29
29
  from chia.types.signing_mode import SigningMode
30
30
  from chia.util.bech32m import encode_puzzle_hash
31
31
  from chia.wallet.conditions import Condition, ConditionValidTimes
32
+ from chia.wallet.puzzle_drivers import PuzzleInfo
32
33
  from chia.wallet.trade_record import TradeRecord
33
34
  from chia.wallet.trading.offer import Offer
34
35
  from chia.wallet.trading.trade_status import TradeStatus
@@ -41,6 +42,7 @@ from chia.wallet.util.wallet_types import WalletType
41
42
  from chia.wallet.wallet_coin_store import GetCoinRecords
42
43
  from chia.wallet.wallet_request_types import (
43
44
  BalanceResponse,
45
+ CancelOffer,
44
46
  CancelOfferResponse,
45
47
  CATAssetIDToName,
46
48
  CATAssetIDToNameResponse,
@@ -49,15 +51,22 @@ from chia.wallet.wallet_request_types import (
49
51
  CATSpend,
50
52
  CATSpendResponse,
51
53
  ClawbackPuzzleDecoratorOverride,
54
+ CreateNewWallet,
55
+ CreateNewWalletType,
56
+ CreateOfferForIDs,
52
57
  CreateOfferForIDsResponse,
53
58
  DeleteUnconfirmedTransactions,
54
59
  ExtendDerivationIndex,
55
60
  ExtendDerivationIndexResponse,
56
61
  FungibleAsset,
62
+ GetAllOffers,
63
+ GetAllOffersResponse,
57
64
  GetCurrentDerivationIndexResponse,
58
65
  GetHeightInfoResponse,
59
66
  GetNextAddress,
60
67
  GetNextAddressResponse,
68
+ GetOffer,
69
+ GetOfferResponse,
61
70
  GetTransaction,
62
71
  GetTransactions,
63
72
  GetTransactionsResponse,
@@ -73,12 +82,37 @@ from chia.wallet.wallet_request_types import (
73
82
  SendTransactionResponse,
74
83
  SpendClawbackCoins,
75
84
  SpendClawbackCoinsResponse,
85
+ TakeOffer,
76
86
  TakeOfferResponse,
77
87
  TransactionRecordWithMetadata,
88
+ WalletCreationMode,
78
89
  WalletInfoResponse,
79
90
  )
80
91
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
81
92
 
93
+ TEMP = PuzzleInfo(
94
+ {
95
+ "type": "singleton",
96
+ "launcher_id": "0x0101010101010101010101010101010101010101010101010101010101010101",
97
+ "launcher_ph": "0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9",
98
+ "also": {
99
+ "type": "metadata",
100
+ "metadata": "",
101
+ "updater_hash": "0x0707070707070707070707070707070707070707070707070707070707070707",
102
+ "also": {
103
+ "type": "ownership",
104
+ "owner": "()",
105
+ "transfer_program": {
106
+ "type": "royalty transfer program",
107
+ "launcher_id": "0x0101010101010101010101010101010101010101010101010101010101010101",
108
+ "royalty_address": "0x0303030303030303030303030303030303030303030303030303030303030303",
109
+ "royalty_percentage": "1000",
110
+ },
111
+ },
112
+ },
113
+ }
114
+ )
115
+
82
116
  test_offer_file_path = importlib_resources.files(__name__.rpartition(".")[0]).joinpath("test_offer.toffer")
83
117
  test_offer_file_bech32 = test_offer_file_path.read_text(encoding="utf-8")
84
118
  test_offer_id: str = "0xdfb7e8643376820ec995b0bcdb3fc1f764c16b814df5e074631263fcf1e00839"
@@ -208,8 +242,8 @@ def test_get_transactions(capsys: object, get_test_cli_clients: tuple[TestRpcCli
208
242
  expected_calls: logType = {
209
243
  "get_wallets": [(GetWallets(type=None, include_data=True),)] * 2,
210
244
  "get_transactions": [
211
- (GetTransactions(uint32(1), uint16(2), uint16(4), SortKey.RELEVANCE.name, True, None, None, None),),
212
- (GetTransactions(uint32(1), uint16(2), uint16(4), SortKey.RELEVANCE.name, True, None, None, None),),
245
+ (GetTransactions(uint32(1), uint32(2), uint32(4), SortKey.RELEVANCE.name, True, None, None, None),),
246
+ (GetTransactions(uint32(1), uint32(2), uint32(4), SortKey.RELEVANCE.name, True, None, None, None),),
213
247
  ],
214
248
  "get_coin_records": [
215
249
  (GetCoinRecords(coin_id_filter=HashFilter.include([expected_coin_id])),),
@@ -276,8 +310,8 @@ def test_show(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path])
276
310
  return NFTGetWalletDIDResponse("did:chia:1qgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpq4msw0c")
277
311
 
278
312
  async def get_connections(
279
- self, node_type: Optional[NodeType] = None
280
- ) -> list[dict[str, Union[str, int, float, bytes32]]]:
313
+ self, node_type: NodeType | None = None
314
+ ) -> list[dict[str, str | int | float | bytes32]]:
281
315
  self.add_to_log("get_connections", (node_type,))
282
316
  return [
283
317
  {
@@ -676,10 +710,6 @@ def test_add_token(capsys: object, get_test_cli_clients: tuple[TestRpcClients, P
676
710
 
677
711
  # set RPC Client
678
712
  class AddTokenRpcClient(TestWalletRpcClient):
679
- async def create_wallet_for_existing_cat(self, asset_id: bytes) -> dict[str, int]:
680
- self.add_to_log("create_wallet_for_existing_cat", (asset_id,))
681
- return {"wallet_id": 3}
682
-
683
713
  async def set_cat_name(self, request: CATSetName) -> CATSetNameResponse:
684
714
  self.add_to_log("set_cat_name", (request.wallet_id, request.name))
685
715
  return CATSetNameResponse(wallet_id=request.wallet_id)
@@ -697,7 +727,19 @@ def test_add_token(capsys: object, get_test_cli_clients: tuple[TestRpcClients, P
697
727
 
698
728
  expected_calls: logType = {
699
729
  "cat_asset_id_to_name": [(get_bytes32(1),), (bytes32([1, 2] * 16),)],
700
- "create_wallet_for_existing_cat": [(bytes32([1, 2] * 16),)],
730
+ "create_new_wallet": [
731
+ (
732
+ CreateNewWallet(
733
+ wallet_type=CreateNewWalletType.CAT_WALLET,
734
+ mode=WalletCreationMode.EXISTING,
735
+ asset_id=bytes32([1, 2] * 16),
736
+ push=True,
737
+ ),
738
+ DEFAULT_TX_CONFIG,
739
+ tuple(),
740
+ ConditionValidTimes(),
741
+ )
742
+ ],
701
743
  "set_cat_name": [(2, "examplecat"), (3, "examplecat")],
702
744
  }
703
745
  test_rpc_clients.wallet_rpc_client.check_log(expected_calls)
@@ -763,17 +805,22 @@ def test_make_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
763
805
  class MakeOfferRpcClient(TestWalletRpcClient):
764
806
  async def create_offer_for_ids(
765
807
  self,
766
- offer_dict: dict[uint32, int],
808
+ request: CreateOfferForIDs,
767
809
  tx_config: TXConfig,
768
- driver_dict: Optional[dict[str, Any]] = None,
769
- solver: Optional[dict[str, Any]] = None,
770
- fee: uint64 = uint64(0),
771
- validate_only: bool = False,
810
+ extra_conditions: tuple[Condition, ...] = tuple(),
772
811
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
773
812
  ) -> CreateOfferForIDsResponse:
774
813
  self.add_to_log(
775
814
  "create_offer_for_ids",
776
- (offer_dict, tx_config, driver_dict, solver, fee, validate_only, timelock_info),
815
+ (
816
+ request.offer,
817
+ tx_config,
818
+ request.driver_dict,
819
+ request.solver,
820
+ request.fee,
821
+ request.validate_only,
822
+ timelock_info,
823
+ ),
777
824
  )
778
825
 
779
826
  created_offer = Offer({}, WalletSpendBundle([], G2Element()), {})
@@ -866,35 +913,39 @@ def test_make_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
866
913
  "create_offer_for_ids": [
867
914
  (
868
915
  {
869
- 1: -10000000000000,
870
- 3: -100000,
871
- "0404040404040404040404040404040404040404040404040404040404040404": -100000,
872
- "0202020202020202020202020202020202020202020202020202020202020202": 10000,
873
- "0101010101010101010101010101010101010101010101010101010101010101": 1,
916
+ "1": "-10000000000000",
917
+ "3": "-100000",
918
+ "0404040404040404040404040404040404040404040404040404040404040404": "-100000",
919
+ "0202020202020202020202020202020202020202020202020202020202020202": "10000",
920
+ "0101010101010101010101010101010101010101010101010101010101010101": "1",
874
921
  },
875
922
  DEFAULT_TX_CONFIG.override(reuse_puzhash=True),
876
923
  {
877
- "0101010101010101010101010101010101010101010101010101010101010101": {
878
- "type": "singleton",
879
- "launcher_id": "0x0101010101010101010101010101010101010101010101010101010101010101",
880
- "launcher_ph": "0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9",
881
- "also": {
882
- "type": "metadata",
883
- "metadata": "",
884
- "updater_hash": "0x0707070707070707070707070707070707070707070707070707070707070707",
924
+ bytes32([1] * 32): PuzzleInfo(
925
+ {
926
+ "type": "singleton",
927
+ "launcher_id": "0x0101010101010101010101010101010101010101010101010101010101010101",
928
+ "launcher_ph": "0xeff07522495060c066f66f32acc2a77e3a3e737aca8baea4d1a64ea4cdc13da9",
885
929
  "also": {
886
- "type": "ownership",
887
- "owner": "()",
888
- "transfer_program": {
889
- "type": "royalty transfer program",
890
- "launcher_id": "0x0101010101010101010101010101010101010101010101010101010101010101",
891
- "royalty_address": "0x0303030303030303030303030303030303030303030"
892
- "303030303030303030303",
893
- "royalty_percentage": "1000",
930
+ "type": "metadata",
931
+ "metadata": "",
932
+ "updater_hash": "0x0707070707070707070707070707070707070707070707070707070707070707",
933
+ "also": {
934
+ "type": "ownership",
935
+ "owner": "()",
936
+ "transfer_program": {
937
+ "type": "royalty transfer program",
938
+ "launcher_id": (
939
+ "0x0101010101010101010101010101010101010101010101010101010101010101"
940
+ ),
941
+ "royalty_address": "0x0303030303030303030303030303030303030303030"
942
+ "303030303030303030303",
943
+ "royalty_percentage": "1000",
944
+ },
894
945
  },
895
946
  },
896
- },
897
- }
947
+ }
948
+ )
898
949
  },
899
950
  None,
900
951
  500000000000,
@@ -911,32 +962,22 @@ def test_get_offers(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
911
962
 
912
963
  # set RPC Client
913
964
  class GetOffersRpcClient(TestWalletRpcClient):
914
- async def get_all_offers(
915
- self,
916
- start: int = 0,
917
- end: int = 50,
918
- sort_key: Optional[str] = None,
919
- reverse: bool = False,
920
- file_contents: bool = False,
921
- exclude_my_offers: bool = False,
922
- exclude_taken_offers: bool = False,
923
- include_completed: bool = False,
924
- ) -> list[TradeRecord]:
965
+ async def get_all_offers(self, request: GetAllOffers) -> GetAllOffersResponse:
925
966
  self.add_to_log(
926
967
  "get_all_offers",
927
968
  (
928
- start,
929
- end,
930
- sort_key,
931
- reverse,
932
- file_contents,
933
- exclude_my_offers,
934
- exclude_taken_offers,
935
- include_completed,
969
+ request.start,
970
+ request.end,
971
+ request.sort_key,
972
+ request.reverse,
973
+ request.file_contents,
974
+ request.exclude_my_offers,
975
+ request.exclude_taken_offers,
976
+ request.include_completed,
936
977
  ),
937
978
  )
938
979
  records: list[TradeRecord] = []
939
- for i in reversed(range(start, end - 1)): # reversed to match the sort order
980
+ for i in reversed(range(request.start, request.end - 1)): # reversed to match the sort order
940
981
  trade_offer = TradeRecord(
941
982
  confirmed_at_index=uint32(0),
942
983
  accepted_at_time=None,
@@ -960,7 +1001,7 @@ def test_get_offers(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
960
1001
  ),
961
1002
  )
962
1003
  records.append(trade_offer)
963
- return records
1004
+ return GetAllOffersResponse([], records)
964
1005
 
965
1006
  inst_rpc_client = GetOffersRpcClient()
966
1007
  test_rpc_clients.wallet_rpc_client = inst_rpc_client
@@ -1021,18 +1062,19 @@ def test_take_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
1021
1062
  class TakeOfferRpcClient(TestWalletRpcClient):
1022
1063
  async def take_offer(
1023
1064
  self,
1024
- offer: Offer,
1065
+ request: TakeOffer,
1025
1066
  tx_config: TXConfig,
1026
- solver: Optional[dict[str, Any]] = None,
1027
- fee: uint64 = uint64(0),
1028
- push: bool = True,
1067
+ extra_conditions: tuple[Condition, ...] = tuple(),
1029
1068
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
1030
1069
  ) -> TakeOfferResponse:
1031
- self.add_to_log("take_offer", (offer, tx_config, solver, fee, push, timelock_info))
1070
+ self.add_to_log(
1071
+ "take_offer",
1072
+ (request.parsed_offer, tx_config, request.solver, request.fee, request.push, timelock_info),
1073
+ )
1032
1074
  return TakeOfferResponse(
1033
1075
  [STD_UTX],
1034
1076
  [STD_TX],
1035
- offer,
1077
+ request.parsed_offer,
1036
1078
  TradeRecord(
1037
1079
  confirmed_at_index=uint32(0),
1038
1080
  accepted_at_time=uint64(123456789),
@@ -1040,10 +1082,10 @@ def test_take_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients,
1040
1082
  is_my_offer=False,
1041
1083
  sent=uint32(1),
1042
1084
  sent_to=[("aaaaa", uint8(1), None)],
1043
- offer=bytes(offer),
1085
+ offer=bytes(request.parsed_offer),
1044
1086
  taken_offer=None,
1045
- coins_of_interest=offer.get_involved_coins(),
1046
- trade_id=offer.name(),
1087
+ coins_of_interest=request.parsed_offer.get_involved_coins(),
1088
+ trade_id=request.parsed_offer.name(),
1047
1089
  status=uint32(TradeStatus.PENDING_ACCEPT.value),
1048
1090
  valid_times=ConditionValidTimes(),
1049
1091
  ),
@@ -1127,34 +1169,37 @@ def test_cancel_offer(capsys: object, get_test_cli_clients: tuple[TestRpcClients
1127
1169
 
1128
1170
  # set RPC Client
1129
1171
  class CancelOfferRpcClient(TestWalletRpcClient):
1130
- async def get_offer(self, trade_id: bytes32, file_contents: bool = False) -> TradeRecord:
1131
- self.add_to_log("get_offer", (trade_id, file_contents))
1172
+ async def get_offer(self, request: GetOffer) -> GetOfferResponse:
1173
+ self.add_to_log("get_offer", (request.trade_id, request.file_contents))
1132
1174
  offer = Offer.from_bech32(test_offer_file_bech32)
1133
- return TradeRecord(
1134
- confirmed_at_index=uint32(0),
1135
- accepted_at_time=uint64(0),
1136
- created_at_time=uint64(12345678),
1137
- is_my_offer=True,
1138
- sent=uint32(0),
1139
- sent_to=[],
1140
- offer=bytes(offer),
1141
- taken_offer=None,
1142
- coins_of_interest=offer.get_involved_coins(),
1143
- trade_id=offer.name(),
1144
- status=uint32(TradeStatus.PENDING_ACCEPT.value),
1145
- valid_times=ConditionValidTimes(),
1175
+ return GetOfferResponse(
1176
+ test_offer_file_bech32,
1177
+ TradeRecord(
1178
+ confirmed_at_index=uint32(0),
1179
+ accepted_at_time=uint64(0),
1180
+ created_at_time=uint64(12345678),
1181
+ is_my_offer=True,
1182
+ sent=uint32(0),
1183
+ sent_to=[],
1184
+ offer=bytes(offer),
1185
+ taken_offer=None,
1186
+ coins_of_interest=offer.get_involved_coins(),
1187
+ trade_id=offer.name(),
1188
+ status=uint32(TradeStatus.PENDING_ACCEPT.value),
1189
+ valid_times=ConditionValidTimes(),
1190
+ ),
1146
1191
  )
1147
1192
 
1148
1193
  async def cancel_offer(
1149
1194
  self,
1150
- trade_id: bytes32,
1195
+ request: CancelOffer,
1151
1196
  tx_config: TXConfig,
1152
- fee: uint64 = uint64(0),
1153
- secure: bool = True,
1154
- push: bool = True,
1197
+ extra_conditions: tuple[Condition, ...] = tuple(),
1155
1198
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
1156
1199
  ) -> CancelOfferResponse:
1157
- self.add_to_log("cancel_offer", (trade_id, tx_config, fee, secure, push, timelock_info))
1200
+ self.add_to_log(
1201
+ "cancel_offer", (request.trade_id, tx_config, request.fee, request.secure, request.push, timelock_info)
1202
+ )
1158
1203
  return CancelOfferResponse([STD_UTX], [STD_TX])
1159
1204
 
1160
1205
  inst_rpc_client = CancelOfferRpcClient()
chia/_tests/conftest.py CHANGED
@@ -12,9 +12,9 @@ import os
12
12
  import random
13
13
  import sysconfig
14
14
  import tempfile
15
- from collections.abc import AsyncIterator, Iterator
15
+ from collections.abc import AsyncIterator, Callable, Iterator
16
16
  from contextlib import AsyncExitStack
17
- from typing import Any, Callable, Union
17
+ from typing import Any
18
18
 
19
19
  import aiohttp
20
20
  import pytest
@@ -28,7 +28,6 @@ from pytest import MonkeyPatch
28
28
  from chia._tests import ether
29
29
  from chia._tests.core.data_layer.util import ChiaRoot
30
30
  from chia._tests.core.node_height import node_height_at_least
31
- from chia._tests.simulation.test_simulation import test_constants_modified
32
31
  from chia._tests.util.misc import (
33
32
  BenchmarkRunner,
34
33
  ComparableEnum,
@@ -100,6 +99,20 @@ from chia.util.keyring_wrapper import KeyringWrapper
100
99
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
101
100
  from chia.wallet.wallet_node import Balance
102
101
 
102
+ test_constants_modified = test_constants.replace(
103
+ DIFFICULTY_STARTING=uint64(2**8),
104
+ DISCRIMINANT_SIZE_BITS=uint16(1024),
105
+ SUB_EPOCH_BLOCKS=uint32(140),
106
+ WEIGHT_PROOF_THRESHOLD=uint8(2),
107
+ WEIGHT_PROOF_RECENT_BLOCKS=uint32(350),
108
+ MAX_SUB_SLOT_BLOCKS=uint32(50),
109
+ NUM_SPS_SUB_SLOT=uint8(32), # Must be a power of 2
110
+ EPOCH_BLOCKS=uint32(280),
111
+ SUB_SLOT_ITERS_STARTING=uint64(2**20),
112
+ NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(5),
113
+ NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(5),
114
+ )
115
+
103
116
 
104
117
  @pytest.fixture(name="ether_setup", autouse=True)
105
118
  def ether_setup_fixture(request: SubRequest, record_property: Callable[[str, object], None]) -> Iterator[None]:
@@ -200,7 +213,8 @@ class ConsensusMode(ComparableEnum):
200
213
 
201
214
  @pytest.fixture(
202
215
  scope="session",
203
- params=[ConsensusMode.PLAIN, ConsensusMode.HARD_FORK_2_0, ConsensusMode.HARD_FORK_3_0],
216
+ # TODO: todo_v2_plots add HARD_FORK_3_0 mode as well as after phase-out
217
+ params=[ConsensusMode.PLAIN, ConsensusMode.HARD_FORK_2_0],
204
218
  )
205
219
  def consensus_mode(request):
206
220
  return request.param
@@ -230,10 +244,14 @@ def blockchain_constants(consensus_mode: ConsensusMode) -> ConsensusConstants:
230
244
 
231
245
 
232
246
  @pytest.fixture(scope="session", name="bt")
233
- async def block_tools_fixture(get_keychain, blockchain_constants, anyio_backend) -> BlockTools:
247
+ async def block_tools_fixture(
248
+ get_keychain, blockchain_constants, anyio_backend, testrun_uid: str
249
+ ) -> AsyncIterator[BlockTools]:
234
250
  # Note that this causes a lot of CPU and disk traffic - disk, DB, ports, process creation ...
235
- shared_block_tools = await create_block_tools_async(constants=blockchain_constants, keychain=get_keychain)
236
- return shared_block_tools
251
+ async with create_block_tools_async(
252
+ constants=blockchain_constants, keychain=get_keychain, testrun_uid=testrun_uid
253
+ ) as shared_block_tools:
254
+ yield shared_block_tools
237
255
 
238
256
 
239
257
  # if you have a system that has an unusual hostname for localhost and you want
@@ -797,7 +815,7 @@ async def one_node(
797
815
  @pytest.fixture(scope="function")
798
816
  async def one_node_one_block(
799
817
  blockchain_constants: ConsensusConstants,
800
- ) -> AsyncIterator[tuple[Union[FullNodeAPI, FullNodeSimulator], ChiaServer, BlockTools]]:
818
+ ) -> AsyncIterator[tuple[FullNodeAPI | FullNodeSimulator, ChiaServer, BlockTools]]:
801
819
  async with setup_simulators_and_wallets(1, 0, blockchain_constants) as new:
802
820
  (nodes, _, bt) = make_old_setup_simulators_and_wallets(new=new)
803
821
  full_node_1 = nodes[0]
@@ -809,7 +827,6 @@ async def one_node_one_block(
809
827
  1,
810
828
  guarantee_transaction_block=True,
811
829
  farmer_reward_puzzle_hash=reward_ph,
812
- pool_reward_puzzle_hash=reward_ph,
813
830
  genesis_timestamp=uint64(10000),
814
831
  time_per_block=10,
815
832
  )
@@ -838,7 +855,6 @@ async def two_nodes_one_block(blockchain_constants: ConsensusConstants):
838
855
  1,
839
856
  guarantee_transaction_block=True,
840
857
  farmer_reward_puzzle_hash=reward_ph,
841
- pool_reward_puzzle_hash=reward_ph,
842
858
  genesis_timestamp=uint64(10000),
843
859
  time_per_block=10,
844
860
  )
@@ -950,16 +966,21 @@ def get_temp_keyring():
950
966
 
951
967
 
952
968
  @pytest.fixture(scope="function")
953
- async def get_b_tools_1(get_temp_keyring):
954
- return await create_block_tools_async(constants=test_constants_modified, keychain=get_temp_keyring)
969
+ async def get_b_tools_1(get_temp_keyring, testrun_uid: str):
970
+ async with create_block_tools_async(
971
+ constants=test_constants_modified, keychain=get_temp_keyring, testrun_uid=testrun_uid
972
+ ) as bt:
973
+ yield bt
955
974
 
956
975
 
957
976
  @pytest.fixture(scope="function")
958
- async def get_b_tools(get_temp_keyring):
959
- local_b_tools = await create_block_tools_async(constants=test_constants_modified, keychain=get_temp_keyring)
960
- new_config = local_b_tools._config
961
- local_b_tools.change_config(new_config)
962
- return local_b_tools
977
+ async def get_b_tools(get_temp_keyring, testrun_uid):
978
+ async with create_block_tools_async(
979
+ constants=test_constants_modified, keychain=get_temp_keyring, testrun_uid=testrun_uid
980
+ ) as local_b_tools:
981
+ new_config = local_b_tools._config
982
+ local_b_tools.change_config(new_config)
983
+ yield local_b_tools
963
984
 
964
985
 
965
986
  @pytest.fixture(scope="function")
@@ -1258,13 +1279,15 @@ def populated_temp_file_keyring_fixture() -> Iterator[TempKeyring]:
1258
1279
 
1259
1280
  @pytest.fixture(scope="function")
1260
1281
  async def farmer_harvester_2_simulators_zero_bits_plot_filter(
1261
- tmp_path: Path, get_temp_keyring: Keychain
1282
+ tmp_path: Path,
1283
+ get_temp_keyring: Keychain,
1284
+ testrun_uid,
1262
1285
  ) -> AsyncIterator[
1263
1286
  tuple[
1264
1287
  FarmerService,
1265
1288
  HarvesterService,
1266
- Union[FullNodeService, SimulatorFullNodeService],
1267
- Union[FullNodeService, SimulatorFullNodeService],
1289
+ FullNodeService | SimulatorFullNodeService,
1290
+ FullNodeService | SimulatorFullNodeService,
1268
1291
  BlockTools,
1269
1292
  ]
1270
1293
  ]:
@@ -1274,21 +1297,27 @@ async def farmer_harvester_2_simulators_zero_bits_plot_filter(
1274
1297
  )
1275
1298
 
1276
1299
  async with AsyncExitStack() as async_exit_stack:
1277
- bt = await create_block_tools_async(
1278
- zero_bit_plot_filter_consts,
1279
- keychain=get_temp_keyring,
1300
+ bt = await async_exit_stack.enter_async_context(
1301
+ create_block_tools_async(
1302
+ zero_bit_plot_filter_consts,
1303
+ keychain=get_temp_keyring,
1304
+ testrun_uid=testrun_uid,
1305
+ )
1280
1306
  )
1281
1307
 
1282
1308
  config_overrides: dict[str, int] = {"full_node.max_sync_wait": 0}
1283
1309
 
1284
1310
  bts = [
1285
- await create_block_tools_async(
1286
- zero_bit_plot_filter_consts,
1287
- keychain=get_temp_keyring,
1288
- num_og_plots=0,
1289
- num_pool_plots=0,
1290
- num_non_keychain_plots=0,
1291
- config_overrides=config_overrides,
1311
+ await async_exit_stack.enter_async_context(
1312
+ create_block_tools_async(
1313
+ zero_bit_plot_filter_consts,
1314
+ keychain=get_temp_keyring,
1315
+ num_og_plots=0,
1316
+ num_pool_plots=0,
1317
+ num_non_keychain_plots=0,
1318
+ config_overrides=config_overrides,
1319
+ testrun_uid=testrun_uid,
1320
+ )
1292
1321
  )
1293
1322
  for _ in range(2)
1294
1323
  ]
@@ -12,7 +12,7 @@ from cryptography.hazmat.backends import default_backend
12
12
  from cryptography.hazmat.primitives import hashes, serialization
13
13
 
14
14
  from chia._tests.util.time_out_assert import time_out_assert
15
- from chia.apis import ApiProtocolRegistry
15
+ from chia.apis import StubMetadataRegistry
16
16
  from chia.protocols.outbound_message import NodeType
17
17
  from chia.protocols.shared_protocol import default_capabilities
18
18
  from chia.server.server import ChiaServer, ssl_context_for_client
@@ -98,7 +98,7 @@ async def add_dummy_connection_wsc(
98
98
  100,
99
99
  30,
100
100
  local_capabilities_for_handshake=default_capabilities[type] + additional_capabilities,
101
- class_for_type=ApiProtocolRegistry,
101
+ stub_metadata_for_type=StubMetadataRegistry,
102
102
  )
103
103
  await wsc.perform_handshake(server._network_id, dummy_port, type)
104
104
  if wsc.incoming_message_task is not None:
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import zipfile
4
+ from collections.abc import Callable
4
5
  from pathlib import Path
5
- from typing import Callable, Optional
6
6
 
7
7
  import pytest
8
8
  from click.testing import CliRunner, Result
@@ -26,7 +26,7 @@ def configure(root_path: Path, *args: str) -> Result:
26
26
  )
27
27
 
28
28
 
29
- def configure_interactive(root_path: Path, user_input: Optional[str] = None) -> Result:
29
+ def configure_interactive(root_path: Path, user_input: str | None = None) -> Result:
30
30
  return CliRunner().invoke(
31
31
  cli,
32
32
  [
@@ -53,7 +53,7 @@ def enable(root_path: Path, *args: str) -> Result:
53
53
  )
54
54
 
55
55
 
56
- def enable_interactive(root_path: Path, user_input: Optional[str] = None) -> Result:
56
+ def enable_interactive(root_path: Path, user_input: str | None = None) -> Result:
57
57
  return CliRunner().invoke(
58
58
  cli,
59
59
  [
@@ -66,7 +66,7 @@ def enable_interactive(root_path: Path, user_input: Optional[str] = None) -> Res
66
66
  )
67
67
 
68
68
 
69
- def prepare_submission(root_path: Path, user_input: Optional[str] = None) -> Result:
69
+ def prepare_submission(root_path: Path, user_input: str | None = None) -> Result:
70
70
  return CliRunner().invoke(
71
71
  cli,
72
72
  [