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
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import dataclasses
4
4
  import logging
5
5
  import random
6
- from typing import Callable, Optional
6
+ from collections.abc import Callable
7
7
 
8
8
  import pytest
9
9
  from chia_rs import (
@@ -26,6 +26,7 @@ from clvm_tools.binutils import assemble
26
26
 
27
27
  from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
28
28
  from chia._tests.connection_utils import add_dummy_connection, connect_and_get_peer
29
+ from chia._tests.core.full_node.test_full_node import find_reward_coin
29
30
  from chia._tests.core.mempool.test_mempool_manager import (
30
31
  IDENTITY_PUZZLE_HASH,
31
32
  TEST_COIN,
@@ -100,7 +101,7 @@ def wallet_a(bt: BlockTools) -> WalletTool:
100
101
  def generate_test_spend_bundle(
101
102
  wallet: WalletTool,
102
103
  coin: Coin,
103
- condition_dic: Optional[dict[ConditionOpcode, list[ConditionWithArgs]]] = None,
104
+ condition_dic: dict[ConditionOpcode, list[ConditionWithArgs]] | None = None,
104
105
  fee: uint64 = uint64(0),
105
106
  amount: uint64 = uint64(1000),
106
107
  new_puzzle_hash: bytes32 = BURN_PUZZLE_HASH,
@@ -350,7 +351,7 @@ async def respond_transaction(
350
351
  peer: WSChiaConnection,
351
352
  tx_bytes: bytes = b"",
352
353
  test: bool = False,
353
- ) -> tuple[MempoolInclusionStatus, Optional[Err]]:
354
+ ) -> tuple[MempoolInclusionStatus, Err | None]:
354
355
  """
355
356
  Receives a full transaction from peer.
356
357
  If tx is added to mempool, send tx_id to others. (new_transaction)
@@ -380,7 +381,6 @@ async def next_block(full_node_1: FullNodeSimulator, wallet_a: WalletTool, bt: B
380
381
  block_list_input=blocks,
381
382
  guarantee_transaction_block=True,
382
383
  farmer_reward_puzzle_hash=reward_ph,
383
- pool_reward_puzzle_hash=reward_ph,
384
384
  genesis_timestamp=uint64(10_000),
385
385
  time_per_block=10,
386
386
  )
@@ -395,15 +395,17 @@ co = ConditionOpcode
395
395
  mis = MempoolInclusionStatus
396
396
 
397
397
 
398
- async def send_sb(node: FullNodeAPI, sb: SpendBundle) -> Optional[Message]:
398
+ async def send_sb(node: FullNodeAPI, dummy_peer: WSChiaConnection, sb: SpendBundle) -> Message | None:
399
399
  tx = wallet_protocol.SendTransaction(sb)
400
- return await node.send_transaction(tx, test=True)
400
+ return await node.send_transaction(tx, dummy_peer, test=True)
401
401
 
402
402
 
403
- async def gen_and_send_sb(node: FullNodeAPI, wallet: WalletTool, coin: Coin, fee: uint64 = uint64(0)) -> SpendBundle:
403
+ async def gen_and_send_sb(
404
+ node: FullNodeAPI, dummy_peer: WSChiaConnection, wallet: WalletTool, coin: Coin, fee: uint64 = uint64(0)
405
+ ) -> SpendBundle:
404
406
  sb = generate_test_spend_bundle(wallet=wallet, coin=coin, fee=fee)
405
407
  assert sb is not None
406
- await send_sb(node, sb)
408
+ await send_sb(node, dummy_peer, sb)
407
409
  return sb
408
410
 
409
411
 
@@ -576,14 +578,14 @@ class TestMempoolManager:
576
578
  block_list_input=blocks,
577
579
  guarantee_transaction_block=True,
578
580
  farmer_reward_puzzle_hash=reward_ph,
579
- pool_reward_puzzle_hash=reward_ph,
580
581
  )
581
582
  peer = await connect_and_get_peer(server_1, server_2, self_hostname)
582
583
 
583
584
  await add_blocks_in_batches(blocks, full_node_1.full_node)
584
585
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
585
586
 
586
- spend_bundle1 = generate_test_spend_bundle(wallet_a, blocks[-1].get_included_reward_coins()[0])
587
+ coin_1 = find_reward_coin(blocks[-1], reward_ph)
588
+ spend_bundle1 = generate_test_spend_bundle(wallet_a, coin_1)
587
589
 
588
590
  assert spend_bundle1 is not None
589
591
  tx1: full_node_protocol.RespondTransaction = full_node_protocol.RespondTransaction(spend_bundle1)
@@ -591,9 +593,10 @@ class TestMempoolManager:
591
593
  assert err is None
592
594
  assert status == MempoolInclusionStatus.SUCCESS
593
595
 
596
+ coin_1 = find_reward_coin(blocks[-1], reward_ph)
594
597
  spend_bundle2 = generate_test_spend_bundle(
595
598
  wallet_a,
596
- blocks[-1].get_included_reward_coins()[0],
599
+ coin_1,
597
600
  new_puzzle_hash=BURN_PUZZLE_HASH_2,
598
601
  )
599
602
  assert spend_bundle2 is not None
@@ -610,7 +613,10 @@ class TestMempoolManager:
610
613
 
611
614
  @pytest.mark.anyio
612
615
  async def test_double_spend_with_higher_fee(
613
- self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
616
+ self,
617
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
618
+ wallet_a: WalletTool,
619
+ self_hostname: str,
614
620
  ) -> None:
615
621
  full_node_1, _, bt = one_node_one_block
616
622
  blocks = await full_node_1.get_all_full_blocks()
@@ -621,7 +627,6 @@ class TestMempoolManager:
621
627
  block_list_input=blocks,
622
628
  guarantee_transaction_block=True,
623
629
  farmer_reward_puzzle_hash=reward_ph,
624
- pool_reward_puzzle_hash=reward_ph,
625
630
  )
626
631
 
627
632
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
@@ -633,15 +638,17 @@ class TestMempoolManager:
633
638
  coins = iter(blocks[-2].get_included_reward_coins())
634
639
  coin3, coin4 = next(coins), next(coins)
635
640
 
636
- sb1_1 = await gen_and_send_sb(full_node_1, wallet_a, coin1)
637
- sb1_2 = await gen_and_send_sb(full_node_1, wallet_a, coin1, fee=uint64(1))
641
+ _, dummy_node_id = await add_dummy_connection(full_node_1.server, self_hostname, 12312)
642
+ dummy_peer = full_node_1.server.all_connections[dummy_node_id]
643
+ sb1_1 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1)
644
+ sb1_2 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1, fee=uint64(1))
638
645
 
639
646
  # Fee increase is insufficient, the old spendbundle must stay
640
647
  assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb1_1)
641
648
  assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1_2)
642
649
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
643
650
 
644
- sb1_3 = await gen_and_send_sb(full_node_1, wallet_a, coin1, fee=MEMPOOL_MIN_FEE_INCREASE)
651
+ sb1_3 = await gen_and_send_sb(full_node_1, dummy_peer, wallet_a, coin1, fee=MEMPOOL_MIN_FEE_INCREASE)
645
652
 
646
653
  # Fee increase is sufficiently high, sb1_1 gets replaced with sb1_3
647
654
  assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1_1)
@@ -650,7 +657,7 @@ class TestMempoolManager:
650
657
 
651
658
  sb2 = generate_test_spend_bundle(wallet_a, coin2, fee=MEMPOOL_MIN_FEE_INCREASE)
652
659
  sb12 = SpendBundle.aggregate([sb2, sb1_3])
653
- await send_sb(full_node_1, sb12)
660
+ await send_sb(full_node_1, dummy_peer, sb12)
654
661
 
655
662
  # Aggregated spendbundle sb12 replaces sb1_3 since it spends a superset
656
663
  # of coins spent in sb1_3
@@ -660,7 +667,7 @@ class TestMempoolManager:
660
667
 
661
668
  sb3 = generate_test_spend_bundle(wallet_a, coin3, fee=uint64(MEMPOOL_MIN_FEE_INCREASE * 2))
662
669
  sb23 = SpendBundle.aggregate([sb2, sb3])
663
- await send_sb(full_node_1, sb23)
670
+ await send_sb(full_node_1, dummy_peer, sb23)
664
671
 
665
672
  # sb23 must not replace existing sb12 as the former does not spend all
666
673
  # coins that are spent in the latter (specifically, coin1)
@@ -668,21 +675,21 @@ class TestMempoolManager:
668
675
  assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb23)
669
676
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
670
677
 
671
- await send_sb(full_node_1, sb3)
678
+ await send_sb(full_node_1, dummy_peer, sb3)
672
679
  # Adding non-conflicting sb3 should succeed
673
680
  assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb3)
674
681
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
675
682
 
676
683
  sb4_1 = generate_test_spend_bundle(wallet_a, coin4, fee=MEMPOOL_MIN_FEE_INCREASE)
677
684
  sb1234_1 = SpendBundle.aggregate([sb12, sb3, sb4_1])
678
- await send_sb(full_node_1, sb1234_1)
685
+ await send_sb(full_node_1, dummy_peer, sb1234_1)
679
686
  # sb1234_1 should not be in pool as it decreases total fees per cost
680
687
  assert_sb_not_in_pool(full_node_1.full_node.mempool_manager, sb1234_1)
681
688
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
682
689
 
683
690
  sb4_2 = generate_test_spend_bundle(wallet_a, coin4, fee=uint64(MEMPOOL_MIN_FEE_INCREASE * 2))
684
691
  sb1234_2 = SpendBundle.aggregate([sb12, sb3, sb4_2])
685
- await send_sb(full_node_1, sb1234_2)
692
+ await send_sb(full_node_1, dummy_peer, sb1234_2)
686
693
  # sb1234_2 has a higher fee per cost than its conflicts and should get
687
694
  # into mempool
688
695
  assert_sb_in_pool(full_node_1.full_node.mempool_manager, sb1234_2)
@@ -692,7 +699,10 @@ class TestMempoolManager:
692
699
 
693
700
  @pytest.mark.anyio
694
701
  async def test_invalid_signature(
695
- self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
702
+ self,
703
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
704
+ wallet_a: WalletTool,
705
+ self_hostname: str,
696
706
  ) -> None:
697
707
  reward_ph = wallet_a.get_new_puzzlehash()
698
708
 
@@ -704,19 +714,19 @@ class TestMempoolManager:
704
714
  block_list_input=blocks,
705
715
  guarantee_transaction_block=True,
706
716
  farmer_reward_puzzle_hash=reward_ph,
707
- pool_reward_puzzle_hash=reward_ph,
708
717
  )
709
718
 
710
719
  await add_blocks_in_batches(blocks, full_node_1.full_node)
711
720
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
712
721
 
713
- coins = iter(blocks[-1].get_included_reward_coins())
714
- coin1 = next(coins)
722
+ coin1 = find_reward_coin(blocks[-1], reward_ph)
715
723
 
716
724
  sb: SpendBundle = generate_test_spend_bundle(wallet_a, coin1)
717
725
  assert sb.aggregated_signature != G2Element.generator()
718
726
  sb = sb.replace(aggregated_signature=G2Element.generator())
719
- res: Optional[Message] = await send_sb(full_node_1, sb)
727
+ _, dummy_node_id = await add_dummy_connection(full_node_1.server, self_hostname, 12312)
728
+ dummy_peer = full_node_1.server.all_connections[dummy_node_id]
729
+ res: Message | None = await send_sb(full_node_1, dummy_peer, sb)
720
730
  assert res is not None
721
731
  ack: TransactionAck = TransactionAck.from_bytes(res.data)
722
732
  assert ack.status == MempoolInclusionStatus.FAILED.value
@@ -730,8 +740,8 @@ class TestMempoolManager:
730
740
  dic: dict[ConditionOpcode, list[ConditionWithArgs]],
731
741
  fee: int = 0,
732
742
  num_blocks: int = 3,
733
- coin: Optional[Coin] = None,
734
- ) -> tuple[list[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus, Optional[Err]]:
743
+ coin: Coin | None = None,
744
+ ) -> tuple[list[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus, Err | None]:
735
745
  reward_ph = wallet_a.get_new_puzzlehash()
736
746
  full_node_1, server_1, bt = one_node_one_block
737
747
  blocks = await full_node_1.get_all_full_blocks()
@@ -741,7 +751,6 @@ class TestMempoolManager:
741
751
  block_list_input=blocks,
742
752
  guarantee_transaction_block=True,
743
753
  farmer_reward_puzzle_hash=reward_ph,
744
- pool_reward_puzzle_hash=reward_ph,
745
754
  )
746
755
  _, dummy_node_id = await add_dummy_connection(server_1, bt.config["self_hostname"], 100)
747
756
  for node_id, wsc in server_1.all_connections.items():
@@ -755,9 +764,8 @@ class TestMempoolManager:
755
764
 
756
765
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + num_blocks)
757
766
 
758
- spend_bundle1 = generate_test_spend_bundle(
759
- wallet_a, coin or blocks[-num_blocks + 2].get_included_reward_coins()[0], dic, uint64(fee)
760
- )
767
+ coin1 = find_reward_coin(blocks[2 - num_blocks], reward_ph)
768
+ spend_bundle1 = generate_test_spend_bundle(wallet_a, coin or coin1, dic, uint64(fee))
761
769
 
762
770
  assert spend_bundle1 is not None
763
771
 
@@ -772,7 +780,7 @@ class TestMempoolManager:
772
780
  node_server_bt: tuple[FullNodeSimulator, ChiaServer, BlockTools],
773
781
  wallet_a: WalletTool,
774
782
  test_fun: Callable[[Coin, Coin], SpendBundle],
775
- ) -> tuple[list[FullBlock], SpendBundle, MempoolInclusionStatus, Optional[Err]]:
783
+ ) -> tuple[list[FullBlock], SpendBundle, MempoolInclusionStatus, Err | None]:
776
784
  reward_ph = wallet_a.get_new_puzzlehash()
777
785
  full_node_1, server_1, bt = node_server_bt
778
786
  blocks = await full_node_1.get_all_full_blocks()
@@ -782,7 +790,6 @@ class TestMempoolManager:
782
790
  block_list_input=blocks,
783
791
  guarantee_transaction_block=True,
784
792
  farmer_reward_puzzle_hash=reward_ph,
785
- pool_reward_puzzle_hash=reward_ph,
786
793
  time_per_block=10,
787
794
  )
788
795
  _, dummy_node_id = await add_dummy_connection(server_1, bt.config["self_hostname"], 100)
@@ -797,8 +804,8 @@ class TestMempoolManager:
797
804
 
798
805
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
799
806
 
800
- coin_1 = blocks[-2].get_included_reward_coins()[0]
801
- coin_2 = blocks[-1].get_included_reward_coins()[0]
807
+ coin_1 = find_reward_coin(blocks[-2], reward_ph)
808
+ coin_2 = find_reward_coin(blocks[-1], reward_ph)
802
809
 
803
810
  bundle = test_fun(coin_1, coin_2)
804
811
 
@@ -1256,7 +1263,7 @@ class TestMempoolManager:
1256
1263
  self,
1257
1264
  assert_garbage: bool,
1258
1265
  announce_garbage: bool,
1259
- expected: Optional[Err],
1266
+ expected: Err | None,
1260
1267
  expected_included: MempoolInclusionStatus,
1261
1268
  one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1262
1269
  wallet_a: WalletTool,
@@ -1469,7 +1476,7 @@ class TestMempoolManager:
1469
1476
  self,
1470
1477
  assert_garbage: bool,
1471
1478
  announce_garbage: bool,
1472
- expected: Optional[Err],
1479
+ expected: Err | None,
1473
1480
  expected_included: MempoolInclusionStatus,
1474
1481
  one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1475
1482
  wallet_a: WalletTool,
@@ -1741,7 +1748,6 @@ class TestMempoolManager:
1741
1748
  block_list_input=blocks,
1742
1749
  guarantee_transaction_block=True,
1743
1750
  farmer_reward_puzzle_hash=reward_ph,
1744
- pool_reward_puzzle_hash=reward_ph,
1745
1751
  )
1746
1752
 
1747
1753
  peer = await connect_and_get_peer(server_1, server_2, bt.config["self_hostname"])
@@ -1757,7 +1763,7 @@ class TestMempoolManager:
1757
1763
 
1758
1764
  fee = 9
1759
1765
 
1760
- coin_1 = blocks[-2].get_included_reward_coins()[0]
1766
+ coin_1 = find_reward_coin(blocks[-2], reward_ph)
1761
1767
  coin_2 = None
1762
1768
  for coin in blocks[-1].get_included_reward_coins():
1763
1769
  if coin.amount == coin_1.amount:
@@ -1801,13 +1807,12 @@ class TestMempoolManager:
1801
1807
  block_list_input=blocks,
1802
1808
  guarantee_transaction_block=True,
1803
1809
  farmer_reward_puzzle_hash=reward_ph,
1804
- pool_reward_puzzle_hash=reward_ph,
1805
1810
  )
1806
1811
 
1807
1812
  await add_blocks_in_batches(blocks, full_node_1.full_node)
1808
1813
 
1809
1814
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
1810
- # coin = blocks[-1].get_included_reward_coins()[0]
1815
+ # coin = find_reward_coin(blocks[-1], reward_ph)
1811
1816
  # spend_bundle1 = generate_test_spend_bundle(wallet_a, coin)
1812
1817
  coin = await next_block(full_node_1, wallet_a, bt)
1813
1818
  spend_bundle1 = generate_test_spend_bundle(wallet_a, coin)
@@ -1849,7 +1854,6 @@ class TestMempoolManager:
1849
1854
  block_list_input=blocks,
1850
1855
  guarantee_transaction_block=True,
1851
1856
  farmer_reward_puzzle_hash=reward_ph,
1852
- pool_reward_puzzle_hash=reward_ph,
1853
1857
  )
1854
1858
 
1855
1859
  await add_blocks_in_batches(blocks, full_node_1.full_node)
@@ -2530,7 +2534,7 @@ class TestGeneratorConditions:
2530
2534
  ],
2531
2535
  )
2532
2536
  def test_softfork_condition(
2533
- self, mempool: bool, condition: str, expect_error: Optional[int], softfork_height: uint32
2537
+ self, mempool: bool, condition: str, expect_error: int | None, softfork_height: uint32
2534
2538
  ) -> None:
2535
2539
  npc_result = generator_condition_tester(condition, mempool_mode=mempool, height=softfork_height)
2536
2540
  print(npc_result)
@@ -2550,7 +2554,7 @@ class TestGeneratorConditions:
2550
2554
  ],
2551
2555
  )
2552
2556
  def test_message_condition(
2553
- self, mempool: bool, condition: str, expect_error: Optional[int], softfork_height: uint32
2557
+ self, mempool: bool, condition: str, expect_error: int | None, softfork_height: uint32
2554
2558
  ) -> None:
2555
2559
  npc_result = generator_condition_tester(condition, mempool_mode=mempool, height=softfork_height)
2556
2560
  print(npc_result)
@@ -2854,14 +2858,14 @@ class TestMaliciousGenerators:
2854
2858
  5,
2855
2859
  guarantee_transaction_block=True,
2856
2860
  farmer_reward_puzzle_hash=reward_ph,
2857
- pool_reward_puzzle_hash=reward_ph,
2858
2861
  )
2859
2862
 
2860
2863
  await add_blocks_in_batches(blocks, full_node_1.full_node)
2861
2864
 
2862
2865
  await time_out_assert(60, node_height_at_least, True, full_node_1, blocks[-1].height)
2863
2866
 
2864
- spend_bundle = generate_test_spend_bundle(wallet_a, blocks[-1].get_included_reward_coins()[0])
2867
+ coin_1 = find_reward_coin(blocks[-1], reward_ph)
2868
+ spend_bundle = generate_test_spend_bundle(wallet_a, coin_1)
2865
2869
  cs = spend_bundle.coin_spends[0]
2866
2870
  c = cs.coin
2867
2871
  coin_0 = Coin(c.parent_coin_info, bytes32([1] * 32), c.amount)
@@ -2920,7 +2924,7 @@ def test_items_by_feerate(items: list[MempoolItem], expected: list[Coin]) -> Non
2920
2924
 
2921
2925
  assert len(ordered_items) == len(expected)
2922
2926
 
2923
- last_fpc: Optional[float] = None
2927
+ last_fpc: float | None = None
2924
2928
  for mi, expected_coin in zip(ordered_items, expected):
2925
2929
  assert len(mi.bundle_coin_spends) == 1
2926
2930
  assert next(iter(mi.bundle_coin_spends.values())).coin_spend.coin == expected_coin
@@ -3413,7 +3417,7 @@ async def test_lineage_cache(seeded_random: random.Random) -> None:
3413
3417
  bytes32.random(seeded_random), bytes32.random(seeded_random), bytes32.random(seeded_random)
3414
3418
  )
3415
3419
 
3416
- async def callback1(ph: bytes32) -> Optional[UnspentLineageInfo]:
3420
+ async def callback1(ph: bytes32) -> UnspentLineageInfo | None:
3417
3421
  nonlocal called
3418
3422
  called += 1
3419
3423
  return info1
@@ -3432,7 +3436,7 @@ async def test_lineage_cache(seeded_random: random.Random) -> None:
3432
3436
 
3433
3437
  called = 0
3434
3438
 
3435
- async def callback_none(ph: bytes32) -> Optional[UnspentLineageInfo]:
3439
+ async def callback_none(ph: bytes32) -> UnspentLineageInfo | None:
3436
3440
  nonlocal called
3437
3441
  called += 1
3438
3442
  return None
@@ -62,43 +62,43 @@ async def test_basics() -> None:
62
62
  async def test_fee_increase() -> None:
63
63
  async with DBConnection(db_version=2) as db_wrapper:
64
64
  coin_store = await CoinStore.create(db_wrapper)
65
- mempool_manager = MempoolManager(
65
+ async with MempoolManager.managed(
66
66
  coin_store.get_coin_records, coin_store.get_unspent_lineage_info_for_puzzle_hash, test_constants
67
- )
68
- assert test_constants.MAX_BLOCK_COST_CLVM == mempool_manager.constants.MAX_BLOCK_COST_CLVM
69
- btc_fee_estimator: BitcoinFeeEstimator = mempool_manager.mempool.fee_estimator # type: ignore
70
- fee_tracker = btc_fee_estimator.get_tracker()
71
- estimator = SmartFeeEstimator(fee_tracker, uint64(test_constants.MAX_BLOCK_COST_CLVM))
72
- random = Random(x=1)
73
- for i in range(300, 700):
74
- items = []
75
- for _ in range(20):
76
- fee = uint64(0)
77
- included_height = uint32(random.randint(i - 60, i - 1))
78
- cost = uint64(5000000)
79
- mempool_item = MempoolItemInfo(
80
- cost,
81
- fee,
82
- included_height,
83
- )
84
- items.append(mempool_item)
85
-
86
- fee_tracker.process_block(uint32(i), items)
87
-
88
- short, med, long = fee_tracker.estimate_fees()
89
- mempool_info = mempool_manager.mempool.fee_estimator.get_mempool_info()
90
-
91
- result = estimator.get_estimates(mempool_info, ignore_mempool=True)
92
-
93
- assert short.median == -1
94
- assert med.median == -1
95
- assert long.median == 0.0
96
-
97
- assert result.error is None
98
- short_estimate = result.estimates[0].estimated_fee_rate
99
- med_estimate = result.estimates[1].estimated_fee_rate
100
- long_estimate = result.estimates[2].estimated_fee_rate
101
-
102
- assert short_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
103
- assert med_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
104
- assert long_estimate.mojos_per_clvm_cost == uint64(0)
67
+ ) as mempool_manager:
68
+ assert test_constants.MAX_BLOCK_COST_CLVM == mempool_manager.constants.MAX_BLOCK_COST_CLVM
69
+ btc_fee_estimator: BitcoinFeeEstimator = mempool_manager.mempool.fee_estimator # type: ignore
70
+ fee_tracker = btc_fee_estimator.get_tracker()
71
+ estimator = SmartFeeEstimator(fee_tracker, uint64(test_constants.MAX_BLOCK_COST_CLVM))
72
+ random = Random(x=1)
73
+ for i in range(300, 700):
74
+ items = []
75
+ for _ in range(20):
76
+ fee = uint64(0)
77
+ included_height = uint32(random.randint(i - 60, i - 1))
78
+ cost = uint64(5000000)
79
+ mempool_item = MempoolItemInfo(
80
+ cost,
81
+ fee,
82
+ included_height,
83
+ )
84
+ items.append(mempool_item)
85
+
86
+ fee_tracker.process_block(uint32(i), items)
87
+
88
+ short, med, long = fee_tracker.estimate_fees()
89
+ mempool_info = mempool_manager.mempool.fee_estimator.get_mempool_info()
90
+
91
+ result = estimator.get_estimates(mempool_info, ignore_mempool=True)
92
+
93
+ assert short.median == -1
94
+ assert med.median == -1
95
+ assert long.median == 0.0
96
+
97
+ assert result.error is None
98
+ short_estimate = result.estimates[0].estimated_fee_rate
99
+ med_estimate = result.estimates[1].estimated_fee_rate
100
+ long_estimate = result.estimates[2].estimated_fee_rate
101
+
102
+ assert short_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
103
+ assert med_estimate.mojos_per_clvm_cost == uint64(fee_tracker.buckets[3] / 1000)
104
+ assert long_estimate.mojos_per_clvm_cost == uint64(0)
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import datetime
4
- from typing import Union
5
4
 
6
5
  import pytest
7
6
  from chia_rs.sized_ints import uint64
@@ -20,9 +19,7 @@ from chia.wallet.wallet import Wallet
20
19
 
21
20
  @pytest.mark.anyio
22
21
  async def test_protocol_messages(
23
- simulator_and_wallet: tuple[
24
- list[Union[FullNodeAPI, FullNodeSimulator]], list[tuple[Wallet, ChiaServer]], BlockTools
25
- ],
22
+ simulator_and_wallet: tuple[list[FullNodeAPI | FullNodeSimulator], list[tuple[Wallet, ChiaServer]], BlockTools],
26
23
  ) -> None:
27
24
  full_nodes, _wallets, bt = simulator_and_wallet
28
25
  a_wallet = bt.get_pool_wallet_tool()
@@ -31,10 +28,9 @@ async def test_protocol_messages(
31
28
  35,
32
29
  guarantee_transaction_block=True,
33
30
  farmer_reward_puzzle_hash=reward_ph,
34
- pool_reward_puzzle_hash=reward_ph,
35
31
  )
36
32
 
37
- full_node_sim: Union[FullNodeAPI, FullNodeSimulator] = full_nodes[0]
33
+ full_node_sim: FullNodeAPI | FullNodeSimulator = full_nodes[0]
38
34
 
39
35
  for block in blocks:
40
36
  await full_node_sim.full_node.add_block(block)