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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_build_chains.py +2 -4
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  7. chia/_tests/clvm/coin_store.py +4 -7
  8. chia/_tests/clvm/test_clvm_step.py +4 -4
  9. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  10. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  11. chia/_tests/clvm/test_singletons.py +2 -4
  12. chia/_tests/clvm/test_spend_sim.py +2 -2
  13. chia/_tests/cmds/cmd_test_utils.py +27 -45
  14. chia/_tests/cmds/test_cmd_framework.py +6 -6
  15. chia/_tests/cmds/test_daemon.py +3 -3
  16. chia/_tests/cmds/test_show.py +4 -4
  17. chia/_tests/cmds/test_tx_config_args.py +1 -2
  18. chia/_tests/cmds/testing_classes.py +4 -5
  19. chia/_tests/cmds/wallet/test_did.py +24 -27
  20. chia/_tests/cmds/wallet/test_nft.py +12 -10
  21. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  22. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  23. chia/_tests/conftest.py +59 -30
  24. chia/_tests/connection_utils.py +2 -2
  25. chia/_tests/core/cmds/test_beta.py +4 -4
  26. chia/_tests/core/cmds/test_keys.py +2 -3
  27. chia/_tests/core/cmds/test_wallet.py +15 -15
  28. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  29. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  30. chia/_tests/core/daemon/test_daemon.py +11 -11
  31. chia/_tests/core/data_layer/conftest.py +2 -2
  32. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  33. chia/_tests/core/data_layer/test_data_store.py +10 -10
  34. chia/_tests/core/data_layer/util.py +11 -11
  35. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  36. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  37. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  38. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  39. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  40. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  41. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  42. chia/_tests/core/full_node/test_conditions.py +21 -23
  43. chia/_tests/core/full_node/test_full_node.py +225 -62
  44. chia/_tests/core/full_node/test_hint_management.py +2 -4
  45. chia/_tests/core/full_node/test_performance.py +0 -1
  46. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  47. chia/_tests/core/full_node/test_transactions.py +1 -2
  48. chia/_tests/core/full_node/test_tx_processing_queue.py +109 -25
  49. chia/_tests/core/mempool/test_mempool.py +29 -37
  50. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  51. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  52. chia/_tests/core/mempool/test_mempool_manager.py +963 -839
  53. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  54. chia/_tests/core/server/serve.py +7 -7
  55. chia/_tests/core/server/test_dos.py +1 -2
  56. chia/_tests/core/server/test_event_loop.py +12 -4
  57. chia/_tests/core/server/test_loop.py +7 -8
  58. chia/_tests/core/server/test_rate_limits.py +9 -8
  59. chia/_tests/core/server/test_server.py +61 -1
  60. chia/_tests/core/services/test_services.py +2 -2
  61. chia/_tests/core/ssl/test_ssl.py +2 -2
  62. chia/_tests/core/test_cost_calculation.py +2 -6
  63. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  64. chia/_tests/core/test_filter.py +0 -1
  65. chia/_tests/core/test_full_node_rpc.py +2 -2
  66. chia/_tests/core/test_merkle_set.py +1 -2
  67. chia/_tests/core/test_seeder.py +4 -4
  68. chia/_tests/core/util/test_config.py +4 -4
  69. chia/_tests/core/util/test_jsonify.py +2 -2
  70. chia/_tests/core/util/test_keychain.py +3 -3
  71. chia/_tests/core/util/test_lockfile.py +2 -1
  72. chia/_tests/core/util/test_log_exceptions.py +1 -2
  73. chia/_tests/core/util/test_streamable.py +17 -17
  74. chia/_tests/db/test_db_wrapper.py +3 -2
  75. chia/_tests/environments/wallet.py +14 -14
  76. chia/_tests/ether.py +4 -3
  77. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  78. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  79. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  80. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  81. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  82. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  83. chia/_tests/harvester/test_harvester_api.py +11 -4
  84. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  85. chia/_tests/plot_sync/test_receiver.py +11 -10
  86. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  87. chia/_tests/plot_sync/util.py +1 -2
  88. chia/_tests/plotting/test_plot_manager.py +7 -6
  89. chia/_tests/plotting/test_prover.py +30 -38
  90. chia/_tests/pools/test_pool_cmdline.py +4 -6
  91. chia/_tests/pools/test_pool_rpc.py +203 -61
  92. chia/_tests/pools/test_pool_wallet.py +3 -3
  93. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  94. chia/_tests/process_junit.py +2 -2
  95. chia/_tests/rpc/test_rpc_client.py +4 -4
  96. chia/_tests/rpc/test_rpc_server.py +3 -3
  97. chia/_tests/simulation/test_simulation.py +12 -25
  98. chia/_tests/solver/test_solver_service.py +13 -4
  99. chia/_tests/testconfig.py +2 -2
  100. chia/_tests/timelord/test_new_peak.py +22 -11
  101. chia/_tests/tools/test_run_block.py +0 -2
  102. chia/_tests/tools/test_virtual_project.py +2 -1
  103. chia/_tests/util/benchmarks.py +1 -0
  104. chia/_tests/util/blockchain.py +38 -36
  105. chia/_tests/util/blockchain_mock.py +11 -11
  106. chia/_tests/util/build_network_protocol_files.py +2 -1
  107. chia/_tests/util/coin_store.py +2 -1
  108. chia/_tests/util/config.py +1 -1
  109. chia/_tests/util/db_connection.py +2 -3
  110. chia/_tests/util/full_sync.py +9 -11
  111. chia/_tests/util/gen_ssl_certs.py +4 -5
  112. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  113. chia/_tests/util/misc.py +24 -24
  114. chia/_tests/util/network_protocol_data.py +20 -3
  115. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  116. chia/_tests/util/protocol_messages_json.py +292 -3
  117. chia/_tests/util/setup_nodes.py +62 -47
  118. chia/_tests/util/spend_sim.py +57 -57
  119. chia/_tests/util/test_async_pool.py +2 -3
  120. chia/_tests/util/test_chia_version.py +1 -3
  121. chia/_tests/util/test_config.py +3 -3
  122. chia/_tests/util/test_full_block_utils.py +6 -3
  123. chia/_tests/util/test_limited_semaphore.py +1 -2
  124. chia/_tests/util/test_misc.py +2 -2
  125. chia/_tests/util/test_network.py +1 -2
  126. chia/_tests/util/test_priority_mutex.py +3 -3
  127. chia/_tests/util/test_recursive_replace.py +5 -6
  128. chia/_tests/util/test_replace_str_to_bytes.py +8 -10
  129. chia/_tests/util/test_testnet_overrides.py +3 -3
  130. chia/_tests/util/time_out_assert.py +2 -2
  131. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  132. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  133. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  134. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  135. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  136. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  137. chia/_tests/wallet/conftest.py +6 -6
  138. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  139. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  140. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  141. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  142. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  145. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  146. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  147. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  148. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  149. chia/_tests/wallet/sync/test_wallet_sync.py +43 -47
  150. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  151. chia/_tests/wallet/test_coin_management.py +2 -2
  152. chia/_tests/wallet/test_conditions.py +45 -51
  153. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  154. chia/_tests/wallet/test_new_wallet_protocol.py +4 -6
  155. chia/_tests/wallet/test_notifications.py +14 -14
  156. chia/_tests/wallet/test_signer_protocol.py +5 -5
  157. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  158. chia/_tests/wallet/test_transaction_store.py +20 -20
  159. chia/_tests/wallet/test_util.py +2 -2
  160. chia/_tests/wallet/test_wallet.py +380 -228
  161. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  162. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  163. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  164. chia/_tests/wallet/test_wallet_node.py +14 -14
  165. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  166. chia/_tests/wallet/test_wallet_utils.py +2 -3
  167. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  168. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  169. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  170. chia/_tests/wallet/wallet_block_tools.py +12 -11
  171. chia/_tests/weight_proof/config.py +1 -0
  172. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  173. chia/apis/__init__.py +21 -0
  174. chia/apis/farmer_stub.py +102 -0
  175. chia/apis/full_node_stub.py +372 -0
  176. chia/apis/harvester_stub.py +57 -0
  177. chia/apis/introducer_stub.py +35 -0
  178. chia/apis/solver_stub.py +30 -0
  179. chia/apis/stub_protocol_registry.py +21 -0
  180. chia/apis/timelord_stub.py +39 -0
  181. chia/apis/wallet_stub.py +161 -0
  182. chia/cmds/beta.py +3 -4
  183. chia/cmds/beta_funcs.py +4 -3
  184. chia/cmds/check_wallet_db.py +4 -4
  185. chia/cmds/chia.py +1 -2
  186. chia/cmds/cmd_classes.py +11 -13
  187. chia/cmds/cmd_helpers.py +11 -11
  188. chia/cmds/cmds_util.py +15 -15
  189. chia/cmds/coin_funcs.py +6 -7
  190. chia/cmds/coins.py +2 -3
  191. chia/cmds/configure.py +1 -2
  192. chia/cmds/data.py +42 -42
  193. chia/cmds/data_funcs.py +81 -81
  194. chia/cmds/db.py +4 -5
  195. chia/cmds/db_backup_func.py +2 -2
  196. chia/cmds/db_upgrade_func.py +3 -3
  197. chia/cmds/db_validate_func.py +2 -2
  198. chia/cmds/dev/data.py +4 -4
  199. chia/cmds/dev/gh.py +5 -5
  200. chia/cmds/dev/installers.py +2 -3
  201. chia/cmds/dev/mempool.py +3 -4
  202. chia/cmds/dev/mempool_funcs.py +4 -4
  203. chia/cmds/dev/sim.py +8 -8
  204. chia/cmds/dump_keyring.py +3 -3
  205. chia/cmds/farm.py +6 -8
  206. chia/cmds/farm_funcs.py +25 -24
  207. chia/cmds/init_funcs.py +4 -4
  208. chia/cmds/keys.py +16 -18
  209. chia/cmds/keys_funcs.py +36 -36
  210. chia/cmds/netspace.py +1 -3
  211. chia/cmds/netspace_funcs.py +1 -2
  212. chia/cmds/options.py +3 -2
  213. chia/cmds/param_types.py +17 -16
  214. chia/cmds/passphrase.py +6 -7
  215. chia/cmds/passphrase_funcs.py +11 -13
  216. chia/cmds/peer.py +1 -3
  217. chia/cmds/peer_funcs.py +3 -3
  218. chia/cmds/plotnft.py +6 -7
  219. chia/cmds/plotnft_funcs.py +37 -26
  220. chia/cmds/rpc.py +3 -3
  221. chia/cmds/show.py +3 -5
  222. chia/cmds/show_funcs.py +9 -9
  223. chia/cmds/sim_funcs.py +25 -26
  224. chia/cmds/solver.py +1 -3
  225. chia/cmds/solver_funcs.py +1 -2
  226. chia/cmds/start_funcs.py +2 -2
  227. chia/cmds/wallet.py +76 -81
  228. chia/cmds/wallet_funcs.py +206 -177
  229. chia/consensus/augmented_chain.py +6 -6
  230. chia/consensus/block_body_validation.py +19 -15
  231. chia/consensus/block_creation.py +25 -21
  232. chia/consensus/block_header_validation.py +27 -13
  233. chia/consensus/block_height_map.py +3 -6
  234. chia/consensus/block_height_map_protocol.py +2 -2
  235. chia/consensus/block_record.py +2 -4
  236. chia/consensus/blockchain.py +58 -40
  237. chia/consensus/blockchain_interface.py +7 -7
  238. chia/consensus/coin_store_protocol.py +5 -6
  239. chia/consensus/condition_tools.py +4 -4
  240. chia/consensus/cost_calculator.py +2 -3
  241. chia/consensus/default_constants.py +16 -13
  242. chia/consensus/deficit.py +1 -3
  243. chia/consensus/difficulty_adjustment.py +3 -5
  244. chia/consensus/find_fork_point.py +2 -4
  245. chia/consensus/full_block_to_block_record.py +11 -13
  246. chia/consensus/generator_tools.py +2 -3
  247. chia/consensus/get_block_challenge.py +42 -26
  248. chia/consensus/get_block_generator.py +2 -3
  249. chia/consensus/make_sub_epoch_summary.py +8 -7
  250. chia/consensus/multiprocess_validation.py +31 -20
  251. chia/consensus/pos_quality.py +6 -23
  252. chia/consensus/pot_iterations.py +17 -44
  253. chia/consensus/signage_point.py +4 -5
  254. chia/consensus/vdf_info_computation.py +2 -4
  255. chia/daemon/client.py +8 -8
  256. chia/daemon/keychain_proxy.py +31 -37
  257. chia/daemon/server.py +32 -33
  258. chia/daemon/windows_signal.py +4 -3
  259. chia/data_layer/data_layer.py +86 -77
  260. chia/data_layer/data_layer_rpc_api.py +9 -9
  261. chia/data_layer/data_layer_rpc_client.py +13 -15
  262. chia/data_layer/data_layer_server.py +3 -3
  263. chia/data_layer/data_layer_util.py +14 -14
  264. chia/data_layer/data_layer_wallet.py +94 -101
  265. chia/data_layer/data_store.py +50 -50
  266. chia/data_layer/dl_wallet_store.py +9 -12
  267. chia/data_layer/download_data.py +8 -9
  268. chia/data_layer/s3_plugin_service.py +5 -9
  269. chia/data_layer/start_data_layer.py +5 -5
  270. chia/farmer/farmer.py +31 -31
  271. chia/farmer/farmer_api.py +45 -33
  272. chia/farmer/farmer_rpc_api.py +5 -4
  273. chia/farmer/farmer_rpc_client.py +6 -6
  274. chia/farmer/start_farmer.py +6 -6
  275. chia/full_node/block_store.py +13 -16
  276. chia/full_node/check_fork_next_block.py +1 -2
  277. chia/full_node/coin_store.py +15 -16
  278. chia/full_node/eligible_coin_spends.py +3 -3
  279. chia/full_node/fee_estimate_store.py +2 -3
  280. chia/full_node/fee_tracker.py +1 -2
  281. chia/full_node/full_block_utils.py +4 -4
  282. chia/full_node/full_node.py +238 -224
  283. chia/full_node/full_node_api.py +193 -150
  284. chia/full_node/full_node_rpc_api.py +53 -31
  285. chia/full_node/full_node_rpc_client.py +18 -19
  286. chia/full_node/full_node_store.py +45 -43
  287. chia/full_node/hint_management.py +2 -2
  288. chia/full_node/mempool.py +17 -19
  289. chia/full_node/mempool_manager.py +89 -42
  290. chia/full_node/pending_tx_cache.py +2 -3
  291. chia/full_node/start_full_node.py +5 -5
  292. chia/full_node/sync_store.py +3 -4
  293. chia/full_node/tx_processing_queue.py +34 -13
  294. chia/full_node/weight_proof.py +61 -48
  295. chia/harvester/harvester.py +25 -24
  296. chia/harvester/harvester_api.py +61 -38
  297. chia/harvester/harvester_rpc_api.py +10 -10
  298. chia/harvester/start_harvester.py +4 -4
  299. chia/introducer/introducer.py +3 -3
  300. chia/introducer/introducer_api.py +6 -4
  301. chia/introducer/start_introducer.py +4 -4
  302. chia/legacy/keyring.py +3 -3
  303. chia/plot_sync/delta.py +1 -2
  304. chia/plot_sync/receiver.py +20 -17
  305. chia/plot_sync/sender.py +15 -10
  306. chia/plotters/bladebit.py +7 -7
  307. chia/plotters/chiapos.py +2 -2
  308. chia/plotters/madmax.py +4 -4
  309. chia/plotters/plotters.py +4 -4
  310. chia/plotters/plotters_util.py +3 -3
  311. chia/plotting/cache.py +20 -14
  312. chia/plotting/check_plots.py +26 -35
  313. chia/plotting/create_plots.py +22 -23
  314. chia/plotting/manager.py +21 -14
  315. chia/plotting/prover.py +59 -42
  316. chia/plotting/util.py +16 -16
  317. chia/pools/pool_config.py +2 -1
  318. chia/pools/pool_puzzles.py +11 -12
  319. chia/pools/pool_wallet.py +34 -57
  320. chia/pools/pool_wallet_info.py +39 -10
  321. chia/protocols/farmer_protocol.py +8 -9
  322. chia/protocols/fee_estimate.py +3 -4
  323. chia/protocols/full_node_protocol.py +3 -4
  324. chia/protocols/harvester_protocol.py +27 -15
  325. chia/protocols/outbound_message.py +3 -3
  326. chia/protocols/pool_protocol.py +8 -9
  327. chia/protocols/shared_protocol.py +1 -2
  328. chia/protocols/solver_protocol.py +9 -2
  329. chia/protocols/timelord_protocol.py +4 -7
  330. chia/protocols/wallet_protocol.py +11 -12
  331. chia/rpc/rpc_client.py +9 -9
  332. chia/rpc/rpc_server.py +17 -17
  333. chia/rpc/util.py +2 -2
  334. chia/seeder/crawler.py +8 -8
  335. chia/seeder/crawler_api.py +21 -27
  336. chia/seeder/crawler_rpc_api.py +2 -2
  337. chia/seeder/dns_server.py +21 -21
  338. chia/seeder/start_crawler.py +4 -4
  339. chia/server/address_manager.py +15 -16
  340. chia/server/api_protocol.py +11 -11
  341. chia/server/chia_policy.py +46 -26
  342. chia/server/introducer_peers.py +2 -3
  343. chia/server/node_discovery.py +19 -19
  344. chia/server/rate_limit_numbers.py +4 -5
  345. chia/server/rate_limits.py +4 -4
  346. chia/server/resolve_peer_info.py +4 -4
  347. chia/server/server.py +49 -52
  348. chia/server/signal_handlers.py +6 -6
  349. chia/server/start_service.py +17 -17
  350. chia/server/upnp.py +4 -6
  351. chia/server/ws_connection.py +52 -37
  352. chia/simulator/add_blocks_in_batches.py +1 -3
  353. chia/simulator/block_tools.py +312 -200
  354. chia/simulator/full_node_simulator.py +56 -35
  355. chia/simulator/keyring.py +2 -3
  356. chia/simulator/setup_services.py +15 -15
  357. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  358. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  359. chia/simulator/simulator_protocol.py +1 -2
  360. chia/simulator/simulator_test_tools.py +3 -3
  361. chia/simulator/start_simulator.py +7 -7
  362. chia/simulator/wallet_tools.py +10 -10
  363. chia/solver/solver.py +10 -10
  364. chia/solver/solver_api.py +10 -8
  365. chia/solver/solver_rpc_api.py +2 -2
  366. chia/solver/start_solver.py +4 -4
  367. chia/ssl/cacert.pem +148 -90
  368. chia/ssl/chia_ca.crt +14 -10
  369. chia/ssl/chia_ca_old.crt +19 -0
  370. chia/ssl/create_ssl.py +4 -4
  371. chia/ssl/renewedselfsignedca.conf +4 -0
  372. chia/ssl/ssl_check.py +1 -2
  373. chia/timelord/iters_from_block.py +1 -4
  374. chia/timelord/start_timelord.py +4 -4
  375. chia/timelord/timelord.py +44 -40
  376. chia/timelord/timelord_api.py +6 -4
  377. chia/timelord/timelord_launcher.py +2 -2
  378. chia/timelord/timelord_rpc_api.py +2 -2
  379. chia/timelord/timelord_state.py +11 -12
  380. chia/types/block_protocol.py +1 -3
  381. chia/types/blockchain_format/coin.py +1 -3
  382. chia/types/blockchain_format/program.py +11 -8
  383. chia/types/blockchain_format/proof_of_space.py +123 -76
  384. chia/types/blockchain_format/tree_hash.py +3 -3
  385. chia/types/blockchain_format/vdf.py +1 -2
  386. chia/types/coin_spend.py +3 -3
  387. chia/types/mempool_item.py +5 -5
  388. chia/types/mempool_submission_status.py +2 -3
  389. chia/types/peer_info.py +1 -2
  390. chia/types/unfinished_header_block.py +3 -4
  391. chia/types/validation_state.py +1 -2
  392. chia/util/action_scope.py +8 -8
  393. chia/util/async_pool.py +5 -5
  394. chia/util/bech32m.py +1 -2
  395. chia/util/beta_metrics.py +2 -2
  396. chia/util/block_cache.py +4 -4
  397. chia/util/chia_logging.py +2 -2
  398. chia/util/chia_version.py +1 -2
  399. chia/util/config.py +15 -16
  400. chia/util/db_wrapper.py +26 -27
  401. chia/util/default_root.py +1 -2
  402. chia/util/errors.py +3 -3
  403. chia/util/file_keyring.py +14 -14
  404. chia/util/files.py +2 -3
  405. chia/util/hash.py +4 -4
  406. chia/util/initial-config.yaml +3 -5
  407. chia/util/inline_executor.py +2 -1
  408. chia/util/ip_address.py +1 -2
  409. chia/util/keychain.py +25 -27
  410. chia/util/keyring_wrapper.py +18 -19
  411. chia/util/lock.py +3 -4
  412. chia/util/log_exceptions.py +1 -2
  413. chia/util/lru_cache.py +2 -2
  414. chia/util/network.py +6 -6
  415. chia/util/path.py +2 -3
  416. chia/util/priority_mutex.py +2 -2
  417. chia/util/profiler.py +1 -2
  418. chia/util/safe_cancel_task.py +1 -2
  419. chia/util/streamable.py +22 -8
  420. chia/util/task_referencer.py +1 -1
  421. chia/util/timing.py +3 -3
  422. chia/util/virtual_project_analysis.py +6 -5
  423. chia/util/ws_message.py +2 -2
  424. chia/wallet/cat_wallet/cat_info.py +3 -4
  425. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  426. chia/wallet/cat_wallet/cat_utils.py +3 -4
  427. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  428. chia/wallet/cat_wallet/lineage_store.py +3 -4
  429. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  430. chia/wallet/coin_selection.py +9 -10
  431. chia/wallet/conditions.py +120 -105
  432. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  433. chia/wallet/derivation_record.py +1 -2
  434. chia/wallet/derive_keys.py +2 -4
  435. chia/wallet/did_wallet/did_info.py +10 -11
  436. chia/wallet/did_wallet/did_wallet.py +36 -82
  437. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  438. chia/wallet/driver_protocol.py +5 -7
  439. chia/wallet/lineage_proof.py +4 -4
  440. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  441. chia/wallet/nft_wallet/nft_info.py +8 -9
  442. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  443. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  444. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  445. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  446. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  447. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  448. chia/wallet/notification_manager.py +3 -3
  449. chia/wallet/notification_store.py +44 -61
  450. chia/wallet/outer_puzzles.py +6 -7
  451. chia/wallet/puzzle_drivers.py +34 -6
  452. chia/wallet/puzzles/clawback/drivers.py +6 -6
  453. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  454. chia/wallet/puzzles/load_clvm.py +1 -1
  455. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  456. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  457. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  458. chia/wallet/puzzles/tails.py +3 -3
  459. chia/wallet/singleton.py +5 -7
  460. chia/wallet/singleton_record.py +3 -3
  461. chia/wallet/start_wallet.py +5 -5
  462. chia/wallet/trade_manager.py +37 -58
  463. chia/wallet/trade_record.py +4 -4
  464. chia/wallet/trading/offer.py +59 -46
  465. chia/wallet/trading/trade_store.py +8 -9
  466. chia/wallet/transaction_record.py +8 -8
  467. chia/wallet/uncurried_puzzle.py +1 -2
  468. chia/wallet/util/clvm_streamable.py +12 -12
  469. chia/wallet/util/compute_hints.py +4 -5
  470. chia/wallet/util/curry_and_treehash.py +1 -2
  471. chia/wallet/util/merkle_tree.py +2 -3
  472. chia/wallet/util/peer_request_cache.py +8 -8
  473. chia/wallet/util/signing.py +85 -0
  474. chia/wallet/util/tx_config.py +15 -6
  475. chia/wallet/util/wallet_sync_utils.py +14 -16
  476. chia/wallet/util/wallet_types.py +2 -2
  477. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  478. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  479. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  480. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  481. chia/wallet/vc_wallet/vc_store.py +5 -6
  482. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  483. chia/wallet/wallet.py +50 -78
  484. chia/wallet/wallet_action_scope.py +11 -11
  485. chia/wallet/wallet_blockchain.py +12 -12
  486. chia/wallet/wallet_coin_record.py +12 -6
  487. chia/wallet/wallet_coin_store.py +24 -25
  488. chia/wallet/wallet_interested_store.py +3 -5
  489. chia/wallet/wallet_nft_store.py +10 -11
  490. chia/wallet/wallet_node.py +53 -61
  491. chia/wallet/wallet_node_api.py +5 -3
  492. chia/wallet/wallet_protocol.py +23 -23
  493. chia/wallet/wallet_puzzle_store.py +15 -18
  494. chia/wallet/wallet_request_types.py +778 -114
  495. chia/wallet/wallet_retry_store.py +1 -3
  496. chia/wallet/wallet_rpc_api.py +572 -909
  497. chia/wallet/wallet_rpc_client.py +87 -279
  498. chia/wallet/wallet_singleton_store.py +3 -4
  499. chia/wallet/wallet_state_manager.py +332 -106
  500. chia/wallet/wallet_transaction_store.py +11 -14
  501. chia/wallet/wallet_user_store.py +4 -6
  502. chia/wallet/wallet_weight_proof_handler.py +4 -4
  503. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/METADATA +6 -5
  504. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/RECORD +507 -516
  505. chia/apis.py +0 -21
  506. chia/consensus/check_time_locks.py +0 -57
  507. chia/data_layer/puzzles/__init__.py +0 -0
  508. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  509. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  510. chia/types/coin_record.py +0 -44
  511. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  512. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  513. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  514. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  515. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  516. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  517. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  518. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  520. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  521. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  522. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  524. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  525. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  526. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/WHEEL +0 -0
  527. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/entry_points.txt +0 -0
  528. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.5.8rc1.dist-info}/licenses/LICENSE +0 -0
@@ -13,6 +13,7 @@ from chia_rs import (
13
13
  G2Element,
14
14
  HeaderBlock,
15
15
  InfusedChallengeChainSubSlot,
16
+ PartialProof,
16
17
  PoolTarget,
17
18
  ProofOfSpace,
18
19
  RespondToPhUpdates,
@@ -155,9 +156,14 @@ partial_proof = harvester_protocol.PartialProofsData(
155
156
  bytes32.fromhex("42743566108589c11bb3811b347900b6351fd3e25bad6c956c0bf1c05a4d93fb"),
156
157
  bytes32.fromhex("8a346e8dc02e9b44c0571caa74fd99f163d4c5d7deaedac87125528721493f7a"),
157
158
  "plot-filename",
158
- [b"partial-proof1", b"partial-proof2"],
159
+ [
160
+ PartialProof([uint64(256)] * 64),
161
+ PartialProof([uint64(257)] * 64),
162
+ ],
159
163
  uint8(4),
160
164
  uint8(32),
165
+ uint8(5),
166
+ bytes32.fromhex("346e8dc02e9b44c0571caa74fd99f163d4c5d7deaedac87125528721493f7a8a"),
161
167
  G1Element.from_bytes(
162
168
  bytes.fromhex(
163
169
  "a04c6b5ac7dfb935f6feecfdd72348ccf1d4be4fe7e26acf271ea3b7d308da61e0a308f7a62495328a81f5147b66634c"
@@ -237,6 +243,7 @@ sub_epochs = SubEpochData(
237
243
  uint8(190),
238
244
  uint64(10527522631566046685),
239
245
  uint64(989988965238543242),
246
+ None,
240
247
  )
241
248
 
242
249
  classgroup_element = ClassgroupElement.get_default_element()
@@ -314,6 +321,7 @@ reward_chain_block = RewardChainBlock(
314
321
  g2_element,
315
322
  vdf_info,
316
323
  vdf_info,
324
+ None,
317
325
  False,
318
326
  )
319
327
 
@@ -1051,6 +1059,7 @@ sub_epoch_summary = SubEpochSummary(
1051
1059
  uint8(4),
1052
1060
  uint64(14666749803532899046),
1053
1061
  uint64(10901191956946573440),
1062
+ None,
1054
1063
  )
1055
1064
 
1056
1065
  new_peak_timelord = timelord_protocol.NewPeakTimelord(
@@ -1116,6 +1125,14 @@ respond_compact_proof_of_time = timelord_protocol.RespondCompactProofOfTime(
1116
1125
  )
1117
1126
 
1118
1127
  # SOLVER PROTOCOL
1119
- solver_info = solver_protocol.SolverInfo(partial_proof=b"partial-proof")
1128
+ solver_info = solver_protocol.SolverInfo(
1129
+ partial_proof=PartialProof([uint64(256)] * 64),
1130
+ plot_id=bytes32.fromhex("071bef40d098cfadc2614d8b57db924788f7f2ea0fde8cf4bfaeae2894caa442"),
1131
+ strength=uint8(5),
1132
+ size=uint8(28),
1133
+ )
1120
1134
 
1121
- solver_response = solver_protocol.SolverResponse(b"partial-proof", b"full-proof")
1135
+ solver_response = solver_protocol.SolverResponse(
1136
+ PartialProof([uint64(256)] * 64),
1137
+ b"full-proof",
1138
+ )
@@ -69,9 +69,148 @@ partial_proof_json: dict[str, Any] = {
69
69
  "challenge_hash": "0x42743566108589c11bb3811b347900b6351fd3e25bad6c956c0bf1c05a4d93fb",
70
70
  "sp_hash": "0x8a346e8dc02e9b44c0571caa74fd99f163d4c5d7deaedac87125528721493f7a",
71
71
  "plot_identifier": "plot-filename",
72
- "partial_proofs": ["0x7061727469616c2d70726f6f6631", "0x7061727469616c2d70726f6f6632"],
72
+ "partial_proofs": [
73
+ {
74
+ "proof_fragments": [
75
+ 256,
76
+ 256,
77
+ 256,
78
+ 256,
79
+ 256,
80
+ 256,
81
+ 256,
82
+ 256,
83
+ 256,
84
+ 256,
85
+ 256,
86
+ 256,
87
+ 256,
88
+ 256,
89
+ 256,
90
+ 256,
91
+ 256,
92
+ 256,
93
+ 256,
94
+ 256,
95
+ 256,
96
+ 256,
97
+ 256,
98
+ 256,
99
+ 256,
100
+ 256,
101
+ 256,
102
+ 256,
103
+ 256,
104
+ 256,
105
+ 256,
106
+ 256,
107
+ 256,
108
+ 256,
109
+ 256,
110
+ 256,
111
+ 256,
112
+ 256,
113
+ 256,
114
+ 256,
115
+ 256,
116
+ 256,
117
+ 256,
118
+ 256,
119
+ 256,
120
+ 256,
121
+ 256,
122
+ 256,
123
+ 256,
124
+ 256,
125
+ 256,
126
+ 256,
127
+ 256,
128
+ 256,
129
+ 256,
130
+ 256,
131
+ 256,
132
+ 256,
133
+ 256,
134
+ 256,
135
+ 256,
136
+ 256,
137
+ 256,
138
+ 256,
139
+ ]
140
+ },
141
+ {
142
+ "proof_fragments": [
143
+ 257,
144
+ 257,
145
+ 257,
146
+ 257,
147
+ 257,
148
+ 257,
149
+ 257,
150
+ 257,
151
+ 257,
152
+ 257,
153
+ 257,
154
+ 257,
155
+ 257,
156
+ 257,
157
+ 257,
158
+ 257,
159
+ 257,
160
+ 257,
161
+ 257,
162
+ 257,
163
+ 257,
164
+ 257,
165
+ 257,
166
+ 257,
167
+ 257,
168
+ 257,
169
+ 257,
170
+ 257,
171
+ 257,
172
+ 257,
173
+ 257,
174
+ 257,
175
+ 257,
176
+ 257,
177
+ 257,
178
+ 257,
179
+ 257,
180
+ 257,
181
+ 257,
182
+ 257,
183
+ 257,
184
+ 257,
185
+ 257,
186
+ 257,
187
+ 257,
188
+ 257,
189
+ 257,
190
+ 257,
191
+ 257,
192
+ 257,
193
+ 257,
194
+ 257,
195
+ 257,
196
+ 257,
197
+ 257,
198
+ 257,
199
+ 257,
200
+ 257,
201
+ 257,
202
+ 257,
203
+ 257,
204
+ 257,
205
+ 257,
206
+ 257,
207
+ ]
208
+ },
209
+ ],
73
210
  "signage_point_index": 4,
74
211
  "plot_size": 32,
212
+ "strength": 5,
213
+ "plot_id": "0x346e8dc02e9b44c0571caa74fd99f163d4c5d7deaedac87125528721493f7a8a",
75
214
  "pool_public_key": "0xa04c6b5ac7dfb935f6feecfdd72348ccf1d4be4fe7e26acf271ea3b7d308da61e0a308f7a62495328a81f5147b66634c",
76
215
  "pool_contract_puzzle_hash": "0x91240fbacdf93b44c0571caa74fd99f163d4c5d7deaedac87125528721493f7a",
77
216
  "plot_public_key": "0xa04c6b5ac7dfb935f6feecfdd72348ccf1d4be4fe7e26acf271ea3b7d308da61e0a308f7a62495328a81f5147b66634c",
@@ -125,6 +264,7 @@ respond_proof_of_weight_json: dict[str, Any] = {
125
264
  "num_blocks_overflow": 190,
126
265
  "new_sub_slot_iters": 10527522631566046685,
127
266
  "new_difficulty": 989988965238543242,
267
+ "challenge_merkle_root": None,
128
268
  }
129
269
  ],
130
270
  "sub_epoch_segments": [
@@ -321,6 +461,7 @@ respond_proof_of_weight_json: dict[str, Any] = {
321
461
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
322
462
  },
323
463
  },
464
+ "header_mmr_root": None,
324
465
  "is_transaction_block": False,
325
466
  },
326
467
  "challenge_chain_sp_proof": {
@@ -515,6 +656,7 @@ respond_blocks_json: dict[str, Any] = {
515
656
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
516
657
  },
517
658
  },
659
+ "header_mmr_root": None,
518
660
  "is_transaction_block": False,
519
661
  },
520
662
  "challenge_chain_sp_proof": {
@@ -691,6 +833,7 @@ respond_blocks_json: dict[str, Any] = {
691
833
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
692
834
  },
693
835
  },
836
+ "header_mmr_root": None,
694
837
  "is_transaction_block": False,
695
838
  },
696
839
  "challenge_chain_sp_proof": {
@@ -873,6 +1016,7 @@ respond_block_json: dict[str, Any] = {
873
1016
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
874
1017
  },
875
1018
  },
1019
+ "header_mmr_root": None,
876
1020
  "is_transaction_block": False,
877
1021
  },
878
1022
  "challenge_chain_sp_proof": {
@@ -1423,6 +1567,7 @@ respond_header_block_json: dict[str, Any] = {
1423
1567
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
1424
1568
  },
1425
1569
  },
1570
+ "header_mmr_root": None,
1426
1571
  "is_transaction_block": False,
1427
1572
  },
1428
1573
  "challenge_chain_sp_proof": {
@@ -1604,6 +1749,7 @@ respond_block_headers_json: dict[str, Any] = {
1604
1749
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
1605
1750
  },
1606
1751
  },
1752
+ "header_mmr_root": None,
1607
1753
  "is_transaction_block": False,
1608
1754
  },
1609
1755
  "challenge_chain_sp_proof": {
@@ -1859,6 +2005,7 @@ respond_header_blocks_json: dict[str, Any] = {
1859
2005
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
1860
2006
  },
1861
2007
  },
2008
+ "header_mmr_root": None,
1862
2009
  "is_transaction_block": False,
1863
2010
  },
1864
2011
  "challenge_chain_sp_proof": {
@@ -2493,6 +2640,7 @@ new_peak_timelord_json: dict[str, Any] = {
2493
2640
  "data": "0x08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
2494
2641
  },
2495
2642
  },
2643
+ "header_mmr_root": None,
2496
2644
  "is_transaction_block": False,
2497
2645
  },
2498
2646
  "difficulty": 7661623532867338566,
@@ -2504,6 +2652,7 @@ new_peak_timelord_json: dict[str, Any] = {
2504
2652
  "num_blocks_overflow": 4,
2505
2653
  "new_difficulty": 14666749803532899046,
2506
2654
  "new_sub_slot_iters": 10901191956946573440,
2655
+ "challenge_merkle_root": None,
2507
2656
  },
2508
2657
  "previous_reward_challenges": [
2509
2658
  ["0x5bb65d8662d561ed2fc17e4177ba61c43017ee7e5418091d38968e36ce380d11", 134240022887890669757150210097251845335]
@@ -2567,6 +2716,7 @@ new_unfinished_block_timelord_json: dict[str, Any] = {
2567
2716
  "num_blocks_overflow": 4,
2568
2717
  "new_difficulty": 14666749803532899046,
2569
2718
  "new_sub_slot_iters": 10901191956946573440,
2719
+ "challenge_merkle_root": None,
2570
2720
  },
2571
2721
  "rc_prev": "0x0f90296b605904a794e4e98852e3b22e0d9bee2fa07abb12df6cecbdb778e1e5",
2572
2722
  }
@@ -2730,9 +2880,148 @@ error_without_data_json: dict[str, Any] = {"code": 1, "message": "Unknown", "dat
2730
2880
 
2731
2881
  error_with_data_json: dict[str, Any] = {"code": 1, "message": "Unknown", "data": "0x65787472612064617461"}
2732
2882
 
2733
- solver_info_json: dict[str, Any] = {"partial_proof": "0x7061727469616c2d70726f6f66"}
2883
+ solver_info_json: dict[str, Any] = {
2884
+ "partial_proof": {
2885
+ "proof_fragments": [
2886
+ 256,
2887
+ 256,
2888
+ 256,
2889
+ 256,
2890
+ 256,
2891
+ 256,
2892
+ 256,
2893
+ 256,
2894
+ 256,
2895
+ 256,
2896
+ 256,
2897
+ 256,
2898
+ 256,
2899
+ 256,
2900
+ 256,
2901
+ 256,
2902
+ 256,
2903
+ 256,
2904
+ 256,
2905
+ 256,
2906
+ 256,
2907
+ 256,
2908
+ 256,
2909
+ 256,
2910
+ 256,
2911
+ 256,
2912
+ 256,
2913
+ 256,
2914
+ 256,
2915
+ 256,
2916
+ 256,
2917
+ 256,
2918
+ 256,
2919
+ 256,
2920
+ 256,
2921
+ 256,
2922
+ 256,
2923
+ 256,
2924
+ 256,
2925
+ 256,
2926
+ 256,
2927
+ 256,
2928
+ 256,
2929
+ 256,
2930
+ 256,
2931
+ 256,
2932
+ 256,
2933
+ 256,
2934
+ 256,
2935
+ 256,
2936
+ 256,
2937
+ 256,
2938
+ 256,
2939
+ 256,
2940
+ 256,
2941
+ 256,
2942
+ 256,
2943
+ 256,
2944
+ 256,
2945
+ 256,
2946
+ 256,
2947
+ 256,
2948
+ 256,
2949
+ 256,
2950
+ ]
2951
+ },
2952
+ "plot_id": "0x071bef40d098cfadc2614d8b57db924788f7f2ea0fde8cf4bfaeae2894caa442",
2953
+ "strength": 5,
2954
+ "size": 28,
2955
+ }
2734
2956
 
2735
2957
  solver_response_json: dict[str, Any] = {
2736
- "partial_proof": "0x7061727469616c2d70726f6f66",
2958
+ "partial_proof": {
2959
+ "proof_fragments": [
2960
+ 256,
2961
+ 256,
2962
+ 256,
2963
+ 256,
2964
+ 256,
2965
+ 256,
2966
+ 256,
2967
+ 256,
2968
+ 256,
2969
+ 256,
2970
+ 256,
2971
+ 256,
2972
+ 256,
2973
+ 256,
2974
+ 256,
2975
+ 256,
2976
+ 256,
2977
+ 256,
2978
+ 256,
2979
+ 256,
2980
+ 256,
2981
+ 256,
2982
+ 256,
2983
+ 256,
2984
+ 256,
2985
+ 256,
2986
+ 256,
2987
+ 256,
2988
+ 256,
2989
+ 256,
2990
+ 256,
2991
+ 256,
2992
+ 256,
2993
+ 256,
2994
+ 256,
2995
+ 256,
2996
+ 256,
2997
+ 256,
2998
+ 256,
2999
+ 256,
3000
+ 256,
3001
+ 256,
3002
+ 256,
3003
+ 256,
3004
+ 256,
3005
+ 256,
3006
+ 256,
3007
+ 256,
3008
+ 256,
3009
+ 256,
3010
+ 256,
3011
+ 256,
3012
+ 256,
3013
+ 256,
3014
+ 256,
3015
+ 256,
3016
+ 256,
3017
+ 256,
3018
+ 256,
3019
+ 256,
3020
+ 256,
3021
+ 256,
3022
+ 256,
3023
+ 256,
3024
+ ]
3025
+ },
2737
3026
  "proof": "0x66756c6c2d70726f6f66",
2738
3027
  }
@@ -7,7 +7,6 @@ from collections.abc import AsyncIterator
7
7
  from contextlib import AsyncExitStack, ExitStack, asynccontextmanager
8
8
  from dataclasses import dataclass
9
9
  from pathlib import Path
10
- from typing import Optional, Union
11
10
 
12
11
  import anyio
13
12
  from chia_rs import ConsensusConstants
@@ -59,8 +58,8 @@ SimulatorsAndWalletsServices = tuple[list[SimulatorFullNodeService], list[Wallet
59
58
 
60
59
  @dataclass(frozen=True)
61
60
  class FullSystem:
62
- node_1: Union[FullNodeService, SimulatorFullNodeService]
63
- node_2: Union[FullNodeService, SimulatorFullNodeService]
61
+ node_1: FullNodeService | SimulatorFullNodeService
62
+ node_2: FullNodeService | SimulatorFullNodeService
64
63
  harvester: Harvester
65
64
  farmer: Farmer
66
65
  introducer: IntroducerAPI
@@ -94,27 +93,32 @@ async def setup_two_nodes(
94
93
 
95
94
  config_overrides = {"full_node.max_sync_wait": 0, "full_node.log_coins": True}
96
95
  with TempKeyring(populate=True) as keychain1, TempKeyring(populate=True) as keychain2:
97
- bt1 = await create_block_tools_async(
98
- constants=consensus_constants, keychain=keychain1, config_overrides=config_overrides
99
- )
100
- async with setup_full_node(
101
- consensus_constants,
102
- "blockchain_test.db",
103
- self_hostname,
104
- bt1,
105
- simulator=False,
106
- db_version=db_version,
107
- ) as service1:
108
- async with setup_full_node(
96
+ async with (
97
+ create_block_tools_async(
98
+ constants=consensus_constants, keychain=keychain1, config_overrides=config_overrides
99
+ ) as bt1,
100
+ setup_full_node(
109
101
  consensus_constants,
110
- "blockchain_test_2.db",
102
+ "blockchain_test.db",
111
103
  self_hostname,
112
- await create_block_tools_async(
113
- constants=consensus_constants, keychain=keychain2, config_overrides=config_overrides
114
- ),
104
+ bt1,
115
105
  simulator=False,
116
106
  db_version=db_version,
117
- ) as service2:
107
+ ) as service1,
108
+ ):
109
+ async with (
110
+ create_block_tools_async(
111
+ constants=consensus_constants, keychain=keychain2, config_overrides=config_overrides
112
+ ) as bt2,
113
+ setup_full_node(
114
+ consensus_constants,
115
+ "blockchain_test_2.db",
116
+ self_hostname,
117
+ bt2,
118
+ simulator=False,
119
+ db_version=db_version,
120
+ ) as service2,
121
+ ):
118
122
  fn1 = service1._api
119
123
  fn2 = service2._api
120
124
 
@@ -138,8 +142,10 @@ async def setup_n_nodes(
138
142
  consensus_constants,
139
143
  f"blockchain_test_{i}.db",
140
144
  self_hostname,
141
- await create_block_tools_async(
142
- constants=consensus_constants, keychain=keychain, config_overrides=config_overrides
145
+ await async_exit_stack.enter_async_context(
146
+ create_block_tools_async(
147
+ constants=consensus_constants, keychain=keychain, config_overrides=config_overrides
148
+ )
143
149
  ),
144
150
  simulator=False,
145
151
  db_version=db_version,
@@ -159,11 +165,11 @@ async def setup_simulators_and_wallets(
159
165
  spam_filter_after_n_txs: int = 200,
160
166
  xch_spam_amount: int = 1000000,
161
167
  *,
162
- key_seed: Optional[bytes32] = None,
168
+ key_seed: bytes32 | None = None,
163
169
  initial_num_public_keys: int = 5,
164
170
  db_version: int = 2,
165
- config_overrides: Optional[dict[str, int]] = None,
166
- disable_capabilities: Optional[list[Capability]] = None,
171
+ config_overrides: dict[str, int] | None = None,
172
+ disable_capabilities: list[Capability] | None = None,
167
173
  ) -> AsyncIterator[SimulatorsAndWallets]:
168
174
  with TempKeyring(populate=True) as keychain1, TempKeyring(populate=True) as keychain2:
169
175
  if config_overrides is None:
@@ -212,11 +218,11 @@ async def setup_simulators_and_wallets_service(
212
218
  spam_filter_after_n_txs: int = 200,
213
219
  xch_spam_amount: int = 1000000,
214
220
  *,
215
- key_seed: Optional[bytes32] = None,
221
+ key_seed: bytes32 | None = None,
216
222
  initial_num_public_keys: int = 5,
217
223
  db_version: int = 2,
218
- config_overrides: Optional[dict[str, int]] = None,
219
- disable_capabilities: Optional[list[Capability]] = None,
224
+ config_overrides: dict[str, int] | None = None,
225
+ disable_capabilities: list[Capability] | None = None,
220
226
  ) -> AsyncIterator[tuple[list[SimulatorFullNodeService], list[WalletService], BlockTools]]:
221
227
  with TempKeyring(populate=True) as keychain1, TempKeyring(populate=True) as keychain2:
222
228
  async with setup_simulators_and_wallets_inner(
@@ -241,29 +247,33 @@ async def setup_simulators_and_wallets_inner(
241
247
  db_version: int,
242
248
  consensus_constants: ConsensusConstants,
243
249
  initial_num_public_keys: int,
244
- key_seed: Optional[bytes32],
250
+ key_seed: bytes32 | None,
245
251
  keychain1: Keychain,
246
252
  keychain2: Keychain,
247
253
  simulator_count: int,
248
254
  spam_filter_after_n_txs: int,
249
255
  wallet_count: int,
250
256
  xch_spam_amount: int,
251
- config_overrides: Optional[dict[str, int]],
252
- disable_capabilities: Optional[list[Capability]],
257
+ config_overrides: dict[str, int] | None,
258
+ disable_capabilities: list[Capability] | None,
253
259
  ) -> AsyncIterator[tuple[list[BlockTools], list[SimulatorFullNodeService], list[WalletService]]]:
254
260
  if config_overrides is not None and "full_node.max_sync_wait" not in config_overrides:
255
261
  config_overrides["full_node.max_sync_wait"] = 0
256
262
  config_overrides["full_node.log_coins"] = True
257
263
  async with AsyncExitStack() as async_exit_stack:
258
264
  bt_tools: list[BlockTools] = [
259
- await create_block_tools_async(consensus_constants, keychain=keychain1, config_overrides=config_overrides)
265
+ await async_exit_stack.enter_async_context(
266
+ create_block_tools_async(consensus_constants, keychain=keychain1, config_overrides=config_overrides)
267
+ )
260
268
  for _ in range(simulator_count)
261
269
  ]
262
270
  if wallet_count > simulator_count:
263
271
  for _ in range(wallet_count - simulator_count):
264
272
  bt_tools.append(
265
- await create_block_tools_async(
266
- consensus_constants, keychain=keychain2, config_overrides=config_overrides
273
+ await async_exit_stack.enter_async_context(
274
+ create_block_tools_async(
275
+ consensus_constants, keychain=keychain2, config_overrides=config_overrides
276
+ )
267
277
  )
268
278
  )
269
279
 
@@ -310,7 +320,7 @@ async def setup_farmer_solver_multi_harvester(
310
320
  consensus_constants: ConsensusConstants,
311
321
  *,
312
322
  start_services: bool,
313
- solver_peer: Optional[UnresolvedPeerInfo] = None,
323
+ solver_peer: UnresolvedPeerInfo | None = None,
314
324
  ) -> AsyncIterator[tuple[list[HarvesterService], FarmerService, BlockTools]]:
315
325
  async with AsyncExitStack() as async_exit_stack:
316
326
  farmer_service = await async_exit_stack.enter_async_context(
@@ -348,8 +358,8 @@ async def setup_farmer_solver_multi_harvester(
348
358
  async def setup_full_system(
349
359
  consensus_constants: ConsensusConstants,
350
360
  shared_b_tools: BlockTools,
351
- b_tools: Optional[BlockTools] = None,
352
- b_tools_1: Optional[BlockTools] = None,
361
+ b_tools: BlockTools | None = None,
362
+ b_tools_1: BlockTools | None = None,
353
363
  db_version: int = 2,
354
364
  ) -> AsyncIterator[FullSystem]:
355
365
  with TempKeyring(populate=True) as keychain1, TempKeyring(populate=True) as keychain2:
@@ -361,8 +371,8 @@ async def setup_full_system(
361
371
 
362
372
  @asynccontextmanager
363
373
  async def setup_full_system_inner(
364
- b_tools: Optional[BlockTools],
365
- b_tools_1: Optional[BlockTools],
374
+ b_tools: BlockTools | None,
375
+ b_tools_1: BlockTools | None,
366
376
  connect_to_daemon: bool,
367
377
  consensus_constants: ConsensusConstants,
368
378
  db_version: int,
@@ -371,18 +381,23 @@ async def setup_full_system_inner(
371
381
  shared_b_tools: BlockTools,
372
382
  ) -> AsyncIterator[FullSystem]:
373
383
  config_overrides = {"full_node.max_sync_wait": 0, "full_node.log_coins": True}
374
- if b_tools is None:
375
- b_tools = await create_block_tools_async(
376
- constants=consensus_constants, keychain=keychain1, config_overrides=config_overrides
377
- )
378
- if b_tools_1 is None:
379
- b_tools_1 = await create_block_tools_async(
380
- constants=consensus_constants, keychain=keychain2, config_overrides=config_overrides
381
- )
382
384
 
383
385
  self_hostname = shared_b_tools.config["self_hostname"]
384
386
 
385
387
  async with AsyncExitStack() as async_exit_stack:
388
+ if b_tools is None:
389
+ b_tools = await async_exit_stack.enter_async_context(
390
+ create_block_tools_async(
391
+ constants=consensus_constants, keychain=keychain1, config_overrides=config_overrides
392
+ )
393
+ )
394
+ if b_tools_1 is None:
395
+ b_tools_1 = await async_exit_stack.enter_async_context(
396
+ create_block_tools_async(
397
+ constants=consensus_constants, keychain=keychain2, config_overrides=config_overrides
398
+ )
399
+ )
400
+
386
401
  vdf1_port = uint16(find_available_listen_port("vdf1"))
387
402
  vdf2_port = uint16(find_available_listen_port("vdf2"))
388
403