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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
  6. chia/_tests/blockchain/test_build_chains.py +2 -4
  7. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  8. chia/_tests/clvm/coin_store.py +4 -7
  9. chia/_tests/clvm/test_clvm_step.py +4 -4
  10. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  11. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  12. chia/_tests/clvm/test_singletons.py +2 -4
  13. chia/_tests/clvm/test_spend_sim.py +2 -2
  14. chia/_tests/cmds/cmd_test_utils.py +27 -45
  15. chia/_tests/cmds/test_cmd_framework.py +6 -6
  16. chia/_tests/cmds/test_daemon.py +3 -3
  17. chia/_tests/cmds/test_show.py +4 -4
  18. chia/_tests/cmds/test_tx_config_args.py +1 -2
  19. chia/_tests/cmds/testing_classes.py +4 -5
  20. chia/_tests/cmds/wallet/test_did.py +24 -27
  21. chia/_tests/cmds/wallet/test_nft.py +12 -10
  22. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  23. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  24. chia/_tests/conftest.py +66 -31
  25. chia/_tests/connection_utils.py +2 -2
  26. chia/_tests/core/cmds/test_beta.py +4 -4
  27. chia/_tests/core/cmds/test_keys.py +2 -3
  28. chia/_tests/core/cmds/test_wallet.py +15 -15
  29. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  30. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  31. chia/_tests/core/daemon/test_daemon.py +11 -11
  32. chia/_tests/core/data_layer/conftest.py +2 -2
  33. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  34. chia/_tests/core/data_layer/test_data_store.py +10 -10
  35. chia/_tests/core/data_layer/util.py +11 -11
  36. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  37. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  38. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  39. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  40. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  41. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  42. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  43. chia/_tests/core/full_node/test_conditions.py +21 -23
  44. chia/_tests/core/full_node/test_full_node.py +273 -70
  45. chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
  46. chia/_tests/core/full_node/test_hint_management.py +2 -4
  47. chia/_tests/core/full_node/test_performance.py +0 -1
  48. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  49. chia/_tests/core/full_node/test_transactions.py +1 -2
  50. chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
  51. chia/_tests/core/mempool/test_mempool.py +54 -50
  52. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  53. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  54. chia/_tests/core/mempool/test_mempool_manager.py +988 -854
  55. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  56. chia/_tests/core/server/serve.py +7 -7
  57. chia/_tests/core/server/test_dos.py +1 -2
  58. chia/_tests/core/server/test_event_loop.py +12 -4
  59. chia/_tests/core/server/test_loop.py +7 -8
  60. chia/_tests/core/server/test_rate_limits.py +9 -8
  61. chia/_tests/core/server/test_server.py +61 -1
  62. chia/_tests/core/services/test_services.py +2 -2
  63. chia/_tests/core/ssl/test_ssl.py +2 -2
  64. chia/_tests/core/test_cost_calculation.py +2 -6
  65. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  66. chia/_tests/core/test_filter.py +0 -1
  67. chia/_tests/core/test_full_node_rpc.py +2 -2
  68. chia/_tests/core/test_merkle_set.py +1 -2
  69. chia/_tests/core/test_seeder.py +4 -4
  70. chia/_tests/core/util/test_config.py +4 -4
  71. chia/_tests/core/util/test_jsonify.py +2 -2
  72. chia/_tests/core/util/test_keychain.py +3 -3
  73. chia/_tests/core/util/test_lockfile.py +2 -1
  74. chia/_tests/core/util/test_log_exceptions.py +1 -2
  75. chia/_tests/core/util/test_streamable.py +17 -17
  76. chia/_tests/db/test_db_wrapper.py +3 -2
  77. chia/_tests/environments/wallet.py +14 -14
  78. chia/_tests/ether.py +4 -3
  79. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  80. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  81. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  82. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  83. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  84. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  85. chia/_tests/harvester/test_harvester_api.py +11 -4
  86. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  87. chia/_tests/plot_sync/test_receiver.py +11 -10
  88. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  89. chia/_tests/plot_sync/util.py +1 -2
  90. chia/_tests/plotting/test_plot_manager.py +7 -6
  91. chia/_tests/plotting/test_prover.py +30 -38
  92. chia/_tests/pools/test_pool_cmdline.py +4 -6
  93. chia/_tests/pools/test_pool_rpc.py +203 -61
  94. chia/_tests/pools/test_pool_wallet.py +3 -3
  95. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  96. chia/_tests/process_junit.py +2 -2
  97. chia/_tests/rpc/test_rpc_client.py +4 -4
  98. chia/_tests/rpc/test_rpc_server.py +3 -3
  99. chia/_tests/simulation/test_simulation.py +12 -25
  100. chia/_tests/solver/test_solver_service.py +13 -4
  101. chia/_tests/testconfig.py +2 -2
  102. chia/_tests/timelord/test_new_peak.py +22 -11
  103. chia/_tests/tools/test_run_block.py +0 -2
  104. chia/_tests/tools/test_virtual_project.py +2 -1
  105. chia/_tests/util/benchmarks.py +1 -0
  106. chia/_tests/util/blockchain.py +38 -36
  107. chia/_tests/util/blockchain_mock.py +11 -11
  108. chia/_tests/util/build_network_protocol_files.py +2 -1
  109. chia/_tests/util/coin_store.py +2 -1
  110. chia/_tests/util/config.py +1 -1
  111. chia/_tests/util/db_connection.py +2 -3
  112. chia/_tests/util/full_sync.py +9 -11
  113. chia/_tests/util/gen_ssl_certs.py +4 -5
  114. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  115. chia/_tests/util/misc.py +24 -24
  116. chia/_tests/util/network_protocol_data.py +20 -3
  117. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  118. chia/_tests/util/protocol_messages_json.py +292 -3
  119. chia/_tests/util/setup_nodes.py +62 -47
  120. chia/_tests/util/spend_sim.py +57 -57
  121. chia/_tests/util/test_async_pool.py +2 -3
  122. chia/_tests/util/test_chia_version.py +1 -3
  123. chia/_tests/util/test_config.py +3 -3
  124. chia/_tests/util/test_full_block_utils.py +6 -3
  125. chia/_tests/util/test_limited_semaphore.py +1 -2
  126. chia/_tests/util/test_misc.py +2 -2
  127. chia/_tests/util/test_network.py +1 -2
  128. chia/_tests/util/test_priority_mutex.py +3 -3
  129. chia/_tests/util/test_recursive_replace.py +5 -6
  130. chia/_tests/util/test_replace_str_to_bytes.py +9 -10
  131. chia/_tests/util/test_testnet_overrides.py +3 -3
  132. chia/_tests/util/time_out_assert.py +2 -2
  133. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  134. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  135. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  136. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  137. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  138. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  139. chia/_tests/wallet/conftest.py +6 -6
  140. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  141. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  142. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  145. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  146. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  147. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  148. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  149. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  150. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  151. chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
  152. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  153. chia/_tests/wallet/test_coin_management.py +2 -2
  154. chia/_tests/wallet/test_conditions.py +45 -51
  155. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  156. chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
  157. chia/_tests/wallet/test_notifications.py +14 -14
  158. chia/_tests/wallet/test_signer_protocol.py +5 -5
  159. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  160. chia/_tests/wallet/test_transaction_store.py +20 -20
  161. chia/_tests/wallet/test_util.py +2 -2
  162. chia/_tests/wallet/test_wallet.py +380 -228
  163. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  164. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  165. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  166. chia/_tests/wallet/test_wallet_node.py +16 -15
  167. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  168. chia/_tests/wallet/test_wallet_utils.py +2 -3
  169. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  170. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  171. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  172. chia/_tests/wallet/wallet_block_tools.py +12 -11
  173. chia/_tests/weight_proof/config.py +1 -0
  174. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  175. chia/apis/__init__.py +21 -0
  176. chia/apis/farmer_stub.py +102 -0
  177. chia/apis/full_node_stub.py +374 -0
  178. chia/apis/harvester_stub.py +57 -0
  179. chia/apis/introducer_stub.py +35 -0
  180. chia/apis/solver_stub.py +30 -0
  181. chia/apis/stub_protocol_registry.py +21 -0
  182. chia/apis/timelord_stub.py +39 -0
  183. chia/apis/wallet_stub.py +161 -0
  184. chia/cmds/beta.py +3 -4
  185. chia/cmds/beta_funcs.py +4 -3
  186. chia/cmds/check_wallet_db.py +4 -4
  187. chia/cmds/chia.py +1 -2
  188. chia/cmds/cmd_classes.py +11 -13
  189. chia/cmds/cmd_helpers.py +11 -11
  190. chia/cmds/cmds_util.py +15 -15
  191. chia/cmds/coin_funcs.py +6 -7
  192. chia/cmds/coins.py +2 -3
  193. chia/cmds/configure.py +1 -2
  194. chia/cmds/data.py +42 -42
  195. chia/cmds/data_funcs.py +81 -81
  196. chia/cmds/db.py +4 -5
  197. chia/cmds/db_backup_func.py +2 -2
  198. chia/cmds/db_upgrade_func.py +3 -3
  199. chia/cmds/db_validate_func.py +2 -2
  200. chia/cmds/dev/data.py +4 -4
  201. chia/cmds/dev/gh.py +5 -5
  202. chia/cmds/dev/installers.py +2 -3
  203. chia/cmds/dev/mempool.py +3 -4
  204. chia/cmds/dev/mempool_funcs.py +4 -4
  205. chia/cmds/dev/sim.py +8 -8
  206. chia/cmds/dump_keyring.py +3 -3
  207. chia/cmds/farm.py +6 -8
  208. chia/cmds/farm_funcs.py +25 -24
  209. chia/cmds/init_funcs.py +4 -4
  210. chia/cmds/keys.py +16 -18
  211. chia/cmds/keys_funcs.py +36 -36
  212. chia/cmds/netspace.py +1 -3
  213. chia/cmds/netspace_funcs.py +1 -2
  214. chia/cmds/options.py +3 -2
  215. chia/cmds/param_types.py +17 -16
  216. chia/cmds/passphrase.py +6 -7
  217. chia/cmds/passphrase_funcs.py +11 -13
  218. chia/cmds/peer.py +1 -3
  219. chia/cmds/peer_funcs.py +3 -3
  220. chia/cmds/plotnft.py +6 -7
  221. chia/cmds/plotnft_funcs.py +37 -26
  222. chia/cmds/rpc.py +3 -3
  223. chia/cmds/show.py +3 -5
  224. chia/cmds/show_funcs.py +9 -9
  225. chia/cmds/sim_funcs.py +25 -26
  226. chia/cmds/solver.py +1 -3
  227. chia/cmds/solver_funcs.py +1 -2
  228. chia/cmds/start_funcs.py +2 -2
  229. chia/cmds/wallet.py +76 -81
  230. chia/cmds/wallet_funcs.py +206 -177
  231. chia/consensus/augmented_chain.py +6 -6
  232. chia/consensus/block_body_validation.py +19 -15
  233. chia/consensus/block_creation.py +25 -21
  234. chia/consensus/block_header_validation.py +27 -13
  235. chia/consensus/block_height_map.py +3 -6
  236. chia/consensus/block_height_map_protocol.py +2 -2
  237. chia/consensus/block_record.py +2 -4
  238. chia/consensus/blockchain.py +58 -40
  239. chia/consensus/blockchain_interface.py +7 -7
  240. chia/consensus/coin_store_protocol.py +5 -6
  241. chia/consensus/condition_tools.py +4 -4
  242. chia/consensus/cost_calculator.py +2 -3
  243. chia/consensus/default_constants.py +19 -13
  244. chia/consensus/deficit.py +1 -3
  245. chia/consensus/difficulty_adjustment.py +3 -5
  246. chia/consensus/find_fork_point.py +2 -4
  247. chia/consensus/full_block_to_block_record.py +11 -13
  248. chia/consensus/generator_tools.py +2 -3
  249. chia/consensus/get_block_challenge.py +50 -26
  250. chia/consensus/get_block_generator.py +2 -3
  251. chia/consensus/make_sub_epoch_summary.py +8 -7
  252. chia/consensus/multiprocess_validation.py +31 -20
  253. chia/consensus/pos_quality.py +6 -23
  254. chia/consensus/pot_iterations.py +17 -44
  255. chia/consensus/signage_point.py +4 -5
  256. chia/consensus/vdf_info_computation.py +2 -4
  257. chia/daemon/client.py +8 -8
  258. chia/daemon/keychain_proxy.py +31 -37
  259. chia/daemon/server.py +32 -33
  260. chia/daemon/windows_signal.py +4 -3
  261. chia/data_layer/data_layer.py +86 -77
  262. chia/data_layer/data_layer_rpc_api.py +9 -9
  263. chia/data_layer/data_layer_rpc_client.py +13 -15
  264. chia/data_layer/data_layer_server.py +3 -3
  265. chia/data_layer/data_layer_util.py +14 -14
  266. chia/data_layer/data_layer_wallet.py +94 -101
  267. chia/data_layer/data_store.py +50 -50
  268. chia/data_layer/dl_wallet_store.py +9 -12
  269. chia/data_layer/download_data.py +8 -9
  270. chia/data_layer/s3_plugin_service.py +5 -9
  271. chia/data_layer/start_data_layer.py +5 -5
  272. chia/farmer/farmer.py +31 -31
  273. chia/farmer/farmer_api.py +45 -33
  274. chia/farmer/farmer_rpc_api.py +5 -4
  275. chia/farmer/farmer_rpc_client.py +6 -6
  276. chia/farmer/start_farmer.py +6 -6
  277. chia/full_node/block_store.py +13 -16
  278. chia/full_node/check_fork_next_block.py +1 -2
  279. chia/full_node/coin_store.py +15 -16
  280. chia/full_node/eligible_coin_spends.py +3 -3
  281. chia/full_node/fee_estimate_store.py +2 -3
  282. chia/full_node/fee_tracker.py +1 -2
  283. chia/full_node/full_block_utils.py +4 -4
  284. chia/full_node/full_node.py +239 -223
  285. chia/full_node/full_node_api.py +197 -152
  286. chia/full_node/full_node_rpc_api.py +34 -32
  287. chia/full_node/full_node_rpc_client.py +18 -19
  288. chia/full_node/full_node_store.py +45 -43
  289. chia/full_node/hard_fork_utils.py +44 -0
  290. chia/full_node/hint_management.py +2 -2
  291. chia/full_node/mempool.py +17 -19
  292. chia/full_node/mempool_manager.py +89 -42
  293. chia/full_node/pending_tx_cache.py +2 -3
  294. chia/full_node/start_full_node.py +5 -5
  295. chia/full_node/sync_store.py +3 -4
  296. chia/full_node/tx_processing_queue.py +120 -36
  297. chia/full_node/weight_proof.py +61 -48
  298. chia/harvester/harvester.py +25 -24
  299. chia/harvester/harvester_api.py +61 -38
  300. chia/harvester/harvester_rpc_api.py +10 -10
  301. chia/harvester/start_harvester.py +4 -4
  302. chia/introducer/introducer.py +3 -3
  303. chia/introducer/introducer_api.py +6 -4
  304. chia/introducer/start_introducer.py +4 -4
  305. chia/legacy/keyring.py +3 -3
  306. chia/plot_sync/delta.py +1 -2
  307. chia/plot_sync/receiver.py +20 -17
  308. chia/plot_sync/sender.py +15 -10
  309. chia/plotters/bladebit.py +7 -7
  310. chia/plotters/chiapos.py +2 -2
  311. chia/plotters/madmax.py +4 -4
  312. chia/plotters/plotters.py +4 -4
  313. chia/plotters/plotters_util.py +3 -3
  314. chia/plotting/cache.py +20 -14
  315. chia/plotting/check_plots.py +26 -35
  316. chia/plotting/create_plots.py +22 -23
  317. chia/plotting/manager.py +21 -14
  318. chia/plotting/prover.py +59 -42
  319. chia/plotting/util.py +16 -16
  320. chia/pools/pool_config.py +2 -1
  321. chia/pools/pool_puzzles.py +11 -12
  322. chia/pools/pool_wallet.py +34 -57
  323. chia/pools/pool_wallet_info.py +39 -10
  324. chia/protocols/farmer_protocol.py +8 -9
  325. chia/protocols/fee_estimate.py +3 -4
  326. chia/protocols/full_node_protocol.py +3 -4
  327. chia/protocols/harvester_protocol.py +27 -15
  328. chia/protocols/outbound_message.py +3 -3
  329. chia/protocols/pool_protocol.py +8 -9
  330. chia/protocols/shared_protocol.py +1 -2
  331. chia/protocols/solver_protocol.py +9 -2
  332. chia/protocols/timelord_protocol.py +4 -7
  333. chia/protocols/wallet_protocol.py +11 -12
  334. chia/rpc/rpc_client.py +9 -9
  335. chia/rpc/rpc_server.py +17 -17
  336. chia/rpc/util.py +2 -2
  337. chia/seeder/crawler.py +8 -8
  338. chia/seeder/crawler_api.py +21 -27
  339. chia/seeder/crawler_rpc_api.py +2 -2
  340. chia/seeder/dns_server.py +21 -21
  341. chia/seeder/start_crawler.py +4 -4
  342. chia/server/address_manager.py +15 -16
  343. chia/server/api_protocol.py +11 -11
  344. chia/server/chia_policy.py +46 -26
  345. chia/server/introducer_peers.py +2 -3
  346. chia/server/node_discovery.py +19 -19
  347. chia/server/rate_limit_numbers.py +4 -5
  348. chia/server/rate_limits.py +4 -4
  349. chia/server/resolve_peer_info.py +4 -4
  350. chia/server/server.py +49 -52
  351. chia/server/signal_handlers.py +6 -6
  352. chia/server/start_service.py +17 -17
  353. chia/server/upnp.py +4 -6
  354. chia/server/ws_connection.py +52 -37
  355. chia/simulator/add_blocks_in_batches.py +1 -3
  356. chia/simulator/block_tools.py +312 -200
  357. chia/simulator/full_node_simulator.py +56 -35
  358. chia/simulator/keyring.py +2 -3
  359. chia/simulator/setup_services.py +15 -15
  360. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  361. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  362. chia/simulator/simulator_protocol.py +1 -2
  363. chia/simulator/simulator_test_tools.py +3 -3
  364. chia/simulator/start_simulator.py +7 -7
  365. chia/simulator/wallet_tools.py +10 -10
  366. chia/solver/solver.py +10 -10
  367. chia/solver/solver_api.py +10 -8
  368. chia/solver/solver_rpc_api.py +2 -2
  369. chia/solver/start_solver.py +4 -4
  370. chia/ssl/cacert.pem +148 -90
  371. chia/ssl/chia_ca.crt +14 -10
  372. chia/ssl/chia_ca_old.crt +19 -0
  373. chia/ssl/create_ssl.py +4 -4
  374. chia/ssl/renewedselfsignedca.conf +4 -0
  375. chia/ssl/ssl_check.py +1 -2
  376. chia/timelord/iters_from_block.py +1 -4
  377. chia/timelord/start_timelord.py +4 -4
  378. chia/timelord/timelord.py +44 -40
  379. chia/timelord/timelord_api.py +6 -4
  380. chia/timelord/timelord_launcher.py +2 -2
  381. chia/timelord/timelord_rpc_api.py +2 -2
  382. chia/timelord/timelord_state.py +11 -12
  383. chia/types/block_protocol.py +1 -3
  384. chia/types/blockchain_format/coin.py +1 -3
  385. chia/types/blockchain_format/program.py +11 -8
  386. chia/types/blockchain_format/proof_of_space.py +123 -76
  387. chia/types/blockchain_format/tree_hash.py +3 -3
  388. chia/types/blockchain_format/vdf.py +1 -2
  389. chia/types/coin_spend.py +3 -3
  390. chia/types/mempool_item.py +5 -5
  391. chia/types/mempool_submission_status.py +2 -3
  392. chia/types/peer_info.py +1 -2
  393. chia/types/unfinished_header_block.py +3 -4
  394. chia/types/validation_state.py +1 -2
  395. chia/util/action_scope.py +8 -8
  396. chia/util/async_pool.py +5 -5
  397. chia/util/bech32m.py +1 -2
  398. chia/util/beta_metrics.py +2 -2
  399. chia/util/block_cache.py +4 -4
  400. chia/util/chia_logging.py +2 -2
  401. chia/util/chia_version.py +1 -2
  402. chia/util/config.py +15 -16
  403. chia/util/db_wrapper.py +26 -27
  404. chia/util/default_root.py +1 -2
  405. chia/util/errors.py +3 -3
  406. chia/util/file_keyring.py +14 -14
  407. chia/util/files.py +2 -3
  408. chia/util/hash.py +4 -4
  409. chia/util/initial-config.yaml +4 -5
  410. chia/util/inline_executor.py +2 -1
  411. chia/util/ip_address.py +1 -2
  412. chia/util/keychain.py +25 -27
  413. chia/util/keyring_wrapper.py +18 -19
  414. chia/util/lock.py +3 -4
  415. chia/util/log_exceptions.py +1 -2
  416. chia/util/lru_cache.py +2 -2
  417. chia/util/network.py +6 -6
  418. chia/util/path.py +2 -3
  419. chia/util/priority_mutex.py +2 -2
  420. chia/util/profiler.py +1 -2
  421. chia/util/safe_cancel_task.py +1 -2
  422. chia/util/streamable.py +24 -10
  423. chia/util/task_referencer.py +1 -1
  424. chia/util/timing.py +3 -3
  425. chia/util/virtual_project_analysis.py +6 -5
  426. chia/util/ws_message.py +2 -2
  427. chia/wallet/cat_wallet/cat_info.py +3 -4
  428. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  429. chia/wallet/cat_wallet/cat_utils.py +3 -4
  430. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  431. chia/wallet/cat_wallet/lineage_store.py +3 -4
  432. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  433. chia/wallet/coin_selection.py +9 -10
  434. chia/wallet/conditions.py +142 -106
  435. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  436. chia/wallet/derivation_record.py +1 -2
  437. chia/wallet/derive_keys.py +2 -4
  438. chia/wallet/did_wallet/did_info.py +10 -11
  439. chia/wallet/did_wallet/did_wallet.py +36 -82
  440. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  441. chia/wallet/driver_protocol.py +5 -7
  442. chia/wallet/lineage_proof.py +4 -4
  443. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  444. chia/wallet/nft_wallet/nft_info.py +8 -9
  445. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  446. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  447. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  448. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  449. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  450. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  451. chia/wallet/notification_manager.py +3 -3
  452. chia/wallet/notification_store.py +44 -61
  453. chia/wallet/outer_puzzles.py +6 -7
  454. chia/wallet/puzzle_drivers.py +34 -6
  455. chia/wallet/puzzles/clawback/drivers.py +6 -6
  456. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  457. chia/wallet/puzzles/load_clvm.py +1 -1
  458. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  459. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  460. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  461. chia/wallet/puzzles/tails.py +3 -3
  462. chia/wallet/singleton.py +5 -7
  463. chia/wallet/singleton_record.py +3 -3
  464. chia/wallet/start_wallet.py +5 -5
  465. chia/wallet/trade_manager.py +37 -58
  466. chia/wallet/trade_record.py +4 -4
  467. chia/wallet/trading/offer.py +59 -46
  468. chia/wallet/trading/trade_store.py +8 -9
  469. chia/wallet/transaction_record.py +8 -8
  470. chia/wallet/uncurried_puzzle.py +1 -2
  471. chia/wallet/util/clvm_streamable.py +12 -12
  472. chia/wallet/util/compute_hints.py +4 -5
  473. chia/wallet/util/curry_and_treehash.py +1 -2
  474. chia/wallet/util/merkle_tree.py +2 -3
  475. chia/wallet/util/peer_request_cache.py +8 -8
  476. chia/wallet/util/signing.py +85 -0
  477. chia/wallet/util/tx_config.py +15 -6
  478. chia/wallet/util/wallet_sync_utils.py +14 -16
  479. chia/wallet/util/wallet_types.py +2 -2
  480. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  481. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  482. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  483. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  484. chia/wallet/vc_wallet/vc_store.py +5 -6
  485. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  486. chia/wallet/wallet.py +50 -78
  487. chia/wallet/wallet_action_scope.py +11 -11
  488. chia/wallet/wallet_blockchain.py +12 -12
  489. chia/wallet/wallet_coin_record.py +12 -6
  490. chia/wallet/wallet_coin_store.py +24 -25
  491. chia/wallet/wallet_interested_store.py +3 -5
  492. chia/wallet/wallet_nft_store.py +10 -11
  493. chia/wallet/wallet_node.py +53 -61
  494. chia/wallet/wallet_node_api.py +5 -3
  495. chia/wallet/wallet_protocol.py +23 -23
  496. chia/wallet/wallet_puzzle_store.py +15 -18
  497. chia/wallet/wallet_request_types.py +778 -114
  498. chia/wallet/wallet_retry_store.py +1 -3
  499. chia/wallet/wallet_rpc_api.py +572 -909
  500. chia/wallet/wallet_rpc_client.py +87 -279
  501. chia/wallet/wallet_singleton_store.py +3 -4
  502. chia/wallet/wallet_state_manager.py +332 -106
  503. chia/wallet/wallet_transaction_store.py +11 -14
  504. chia/wallet/wallet_user_store.py +4 -6
  505. chia/wallet/wallet_weight_proof_handler.py +4 -4
  506. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
  507. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
  508. chia/apis.py +0 -21
  509. chia/consensus/check_time_locks.py +0 -57
  510. chia/data_layer/puzzles/__init__.py +0 -0
  511. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  512. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  513. chia/types/coin_record.py +0 -44
  514. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  515. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  516. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  517. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  518. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  520. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  521. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  522. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  524. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  525. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  526. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  527. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  528. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  529. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
  530. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
  531. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
@@ -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]:
@@ -195,12 +208,14 @@ def get_keychain():
195
208
  class ConsensusMode(ComparableEnum):
196
209
  PLAIN = 0
197
210
  HARD_FORK_2_0 = 1
198
- HARD_FORK_3_0 = 2
211
+ SOFT_FORK_2_6 = 2
212
+ HARD_FORK_3_0 = 3
199
213
 
200
214
 
201
215
  @pytest.fixture(
202
216
  scope="session",
203
- params=[ConsensusMode.PLAIN, ConsensusMode.HARD_FORK_2_0, ConsensusMode.HARD_FORK_3_0],
217
+ # TODO: todo_v2_plots add HARD_FORK_3_0 mode as well as after phase-out
218
+ params=[ConsensusMode.PLAIN, ConsensusMode.HARD_FORK_2_0, ConsensusMode.SOFT_FORK_2_6],
204
219
  )
205
220
  def consensus_mode(request):
206
221
  return request.param
@@ -217,6 +232,11 @@ def blockchain_constants(consensus_mode: ConsensusMode) -> ConsensusConstants:
217
232
  PLOT_FILTER_32_HEIGHT=uint32(20),
218
233
  )
219
234
 
235
+ if consensus_mode >= ConsensusMode.SOFT_FORK_2_6:
236
+ ret = ret.replace(
237
+ SOFT_FORK8_HEIGHT=uint32(2),
238
+ )
239
+
220
240
  if consensus_mode >= ConsensusMode.HARD_FORK_3_0:
221
241
  ret = ret.replace(
222
242
  HARD_FORK_HEIGHT=uint32(2),
@@ -230,10 +250,14 @@ def blockchain_constants(consensus_mode: ConsensusMode) -> ConsensusConstants:
230
250
 
231
251
 
232
252
  @pytest.fixture(scope="session", name="bt")
233
- async def block_tools_fixture(get_keychain, blockchain_constants, anyio_backend) -> BlockTools:
253
+ async def block_tools_fixture(
254
+ get_keychain, blockchain_constants, anyio_backend, testrun_uid: str
255
+ ) -> AsyncIterator[BlockTools]:
234
256
  # 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
257
+ async with create_block_tools_async(
258
+ constants=blockchain_constants, keychain=get_keychain, testrun_uid=testrun_uid
259
+ ) as shared_block_tools:
260
+ yield shared_block_tools
237
261
 
238
262
 
239
263
  # if you have a system that has an unusual hostname for localhost and you want
@@ -797,7 +821,7 @@ async def one_node(
797
821
  @pytest.fixture(scope="function")
798
822
  async def one_node_one_block(
799
823
  blockchain_constants: ConsensusConstants,
800
- ) -> AsyncIterator[tuple[Union[FullNodeAPI, FullNodeSimulator], ChiaServer, BlockTools]]:
824
+ ) -> AsyncIterator[tuple[FullNodeAPI | FullNodeSimulator, ChiaServer, BlockTools]]:
801
825
  async with setup_simulators_and_wallets(1, 0, blockchain_constants) as new:
802
826
  (nodes, _, bt) = make_old_setup_simulators_and_wallets(new=new)
803
827
  full_node_1 = nodes[0]
@@ -809,7 +833,6 @@ async def one_node_one_block(
809
833
  1,
810
834
  guarantee_transaction_block=True,
811
835
  farmer_reward_puzzle_hash=reward_ph,
812
- pool_reward_puzzle_hash=reward_ph,
813
836
  genesis_timestamp=uint64(10000),
814
837
  time_per_block=10,
815
838
  )
@@ -838,7 +861,6 @@ async def two_nodes_one_block(blockchain_constants: ConsensusConstants):
838
861
  1,
839
862
  guarantee_transaction_block=True,
840
863
  farmer_reward_puzzle_hash=reward_ph,
841
- pool_reward_puzzle_hash=reward_ph,
842
864
  genesis_timestamp=uint64(10000),
843
865
  time_per_block=10,
844
866
  )
@@ -950,16 +972,21 @@ def get_temp_keyring():
950
972
 
951
973
 
952
974
  @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)
975
+ async def get_b_tools_1(get_temp_keyring, testrun_uid: str):
976
+ async with create_block_tools_async(
977
+ constants=test_constants_modified, keychain=get_temp_keyring, testrun_uid=testrun_uid
978
+ ) as bt:
979
+ yield bt
955
980
 
956
981
 
957
982
  @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
983
+ async def get_b_tools(get_temp_keyring, testrun_uid):
984
+ async with create_block_tools_async(
985
+ constants=test_constants_modified, keychain=get_temp_keyring, testrun_uid=testrun_uid
986
+ ) as local_b_tools:
987
+ new_config = local_b_tools._config
988
+ local_b_tools.change_config(new_config)
989
+ yield local_b_tools
963
990
 
964
991
 
965
992
  @pytest.fixture(scope="function")
@@ -1258,13 +1285,15 @@ def populated_temp_file_keyring_fixture() -> Iterator[TempKeyring]:
1258
1285
 
1259
1286
  @pytest.fixture(scope="function")
1260
1287
  async def farmer_harvester_2_simulators_zero_bits_plot_filter(
1261
- tmp_path: Path, get_temp_keyring: Keychain
1288
+ tmp_path: Path,
1289
+ get_temp_keyring: Keychain,
1290
+ testrun_uid,
1262
1291
  ) -> AsyncIterator[
1263
1292
  tuple[
1264
1293
  FarmerService,
1265
1294
  HarvesterService,
1266
- Union[FullNodeService, SimulatorFullNodeService],
1267
- Union[FullNodeService, SimulatorFullNodeService],
1295
+ FullNodeService | SimulatorFullNodeService,
1296
+ FullNodeService | SimulatorFullNodeService,
1268
1297
  BlockTools,
1269
1298
  ]
1270
1299
  ]:
@@ -1274,21 +1303,27 @@ async def farmer_harvester_2_simulators_zero_bits_plot_filter(
1274
1303
  )
1275
1304
 
1276
1305
  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,
1306
+ bt = await async_exit_stack.enter_async_context(
1307
+ create_block_tools_async(
1308
+ zero_bit_plot_filter_consts,
1309
+ keychain=get_temp_keyring,
1310
+ testrun_uid=testrun_uid,
1311
+ )
1280
1312
  )
1281
1313
 
1282
1314
  config_overrides: dict[str, int] = {"full_node.max_sync_wait": 0}
1283
1315
 
1284
1316
  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,
1317
+ await async_exit_stack.enter_async_context(
1318
+ create_block_tools_async(
1319
+ zero_bit_plot_filter_consts,
1320
+ keychain=get_temp_keyring,
1321
+ num_og_plots=0,
1322
+ num_pool_plots=0,
1323
+ num_non_keychain_plots=0,
1324
+ config_overrides=config_overrides,
1325
+ testrun_uid=testrun_uid,
1326
+ )
1292
1327
  )
1293
1328
  for _ in range(2)
1294
1329
  ]
@@ -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: