chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__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 (637) hide show
  1. chia/_tests/README.md +1 -1
  2. chia/_tests/blockchain/blockchain_test_utils.py +24 -26
  3. chia/_tests/blockchain/test_augmented_chain.py +6 -8
  4. chia/_tests/blockchain/test_blockchain.py +409 -307
  5. chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
  6. chia/_tests/blockchain/test_build_chains.py +11 -13
  7. chia/_tests/blockchain/test_get_block_generator.py +8 -8
  8. chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
  9. chia/_tests/build-init-files.py +3 -4
  10. chia/_tests/build-job-matrix.py +9 -9
  11. chia/_tests/check_sql_statements.py +2 -3
  12. chia/_tests/clvm/benchmark_costs.py +1 -1
  13. chia/_tests/clvm/coin_store.py +7 -5
  14. chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
  15. chia/_tests/clvm/test_condition_codes.py +2 -2
  16. chia/_tests/clvm/test_curry_and_treehash.py +2 -4
  17. chia/_tests/clvm/test_message_conditions.py +184 -0
  18. chia/_tests/clvm/test_puzzle_compression.py +1 -2
  19. chia/_tests/clvm/test_puzzle_drivers.py +3 -3
  20. chia/_tests/clvm/test_puzzles.py +13 -18
  21. chia/_tests/clvm/test_singletons.py +17 -17
  22. chia/_tests/clvm/test_spend_sim.py +7 -7
  23. chia/_tests/cmds/cmd_test_utils.py +42 -45
  24. chia/_tests/cmds/conftest.py +2 -2
  25. chia/_tests/cmds/test_click_types.py +21 -16
  26. chia/_tests/cmds/test_cmd_framework.py +255 -35
  27. chia/_tests/cmds/test_cmds_util.py +2 -2
  28. chia/_tests/cmds/test_daemon.py +3 -3
  29. chia/_tests/cmds/test_dev_gh.py +131 -0
  30. chia/_tests/cmds/test_farm_cmd.py +1 -2
  31. chia/_tests/cmds/test_show.py +6 -6
  32. chia/_tests/cmds/test_tx_config_args.py +2 -1
  33. chia/_tests/cmds/wallet/test_dao.py +23 -23
  34. chia/_tests/cmds/wallet/test_did.py +29 -29
  35. chia/_tests/cmds/wallet/test_nft.py +24 -23
  36. chia/_tests/cmds/wallet/test_notifications.py +8 -8
  37. chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
  38. chia/_tests/cmds/wallet/test_vcs.py +97 -73
  39. chia/_tests/cmds/wallet/test_wallet.py +74 -75
  40. chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
  41. chia/_tests/conftest.py +153 -38
  42. chia/_tests/connection_utils.py +7 -6
  43. chia/_tests/core/cmds/test_beta.py +3 -3
  44. chia/_tests/core/cmds/test_keys.py +6 -6
  45. chia/_tests/core/cmds/test_wallet.py +3 -3
  46. chia/_tests/core/consensus/test_block_creation.py +3 -5
  47. chia/_tests/core/custom_types/test_coin.py +1 -3
  48. chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
  49. chia/_tests/core/daemon/test_daemon.py +58 -58
  50. chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
  51. chia/_tests/core/data_layer/conftest.py +4 -3
  52. chia/_tests/core/data_layer/test_data_cli.py +1 -2
  53. chia/_tests/core/data_layer/test_data_layer.py +5 -5
  54. chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
  55. chia/_tests/core/data_layer/test_data_rpc.py +75 -93
  56. chia/_tests/core/data_layer/test_data_store.py +38 -37
  57. chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
  58. chia/_tests/core/data_layer/util.py +11 -10
  59. chia/_tests/core/farmer/test_farmer_api.py +6 -4
  60. chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
  61. chia/_tests/core/full_node/ram_db.py +2 -2
  62. chia/_tests/core/full_node/stores/test_block_store.py +113 -11
  63. chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
  64. chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
  65. chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
  66. chia/_tests/core/full_node/test_address_manager.py +2 -2
  67. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  68. chia/_tests/core/full_node/test_conditions.py +10 -12
  69. chia/_tests/core/full_node/test_full_node.py +2077 -1822
  70. chia/_tests/core/full_node/test_generator_tools.py +4 -4
  71. chia/_tests/core/full_node/test_hint_management.py +2 -2
  72. chia/_tests/core/full_node/test_performance.py +2 -5
  73. chia/_tests/core/full_node/test_subscriptions.py +4 -4
  74. chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
  75. chia/_tests/core/make_block_generator.py +5 -7
  76. chia/_tests/core/mempool/test_mempool.py +205 -208
  77. chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
  78. chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
  79. chia/_tests/core/mempool/test_mempool_manager.py +109 -80
  80. chia/_tests/core/mempool/test_mempool_performance.py +3 -4
  81. chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
  82. chia/_tests/core/server/flood.py +6 -4
  83. chia/_tests/core/server/serve.py +10 -7
  84. chia/_tests/core/server/test_api_protocol.py +21 -0
  85. chia/_tests/core/server/test_capabilities.py +3 -5
  86. chia/_tests/core/server/test_dos.py +15 -16
  87. chia/_tests/core/server/test_loop.py +14 -10
  88. chia/_tests/core/server/test_node_discovery.py +1 -2
  89. chia/_tests/core/server/test_rate_limits.py +156 -44
  90. chia/_tests/core/server/test_server.py +8 -7
  91. chia/_tests/core/services/test_services.py +59 -37
  92. chia/_tests/core/ssl/test_ssl.py +5 -3
  93. chia/_tests/core/test_cost_calculation.py +5 -6
  94. chia/_tests/core/test_crawler.py +2 -2
  95. chia/_tests/core/test_db_conversion.py +5 -4
  96. chia/_tests/core/test_db_validation.py +6 -5
  97. chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
  98. chia/_tests/core/test_filter.py +3 -5
  99. chia/_tests/core/test_full_node_rpc.py +64 -90
  100. chia/_tests/core/test_merkle_set.py +10 -10
  101. chia/_tests/core/test_program.py +2 -4
  102. chia/_tests/core/test_rpc_util.py +1 -2
  103. chia/_tests/core/test_seeder.py +124 -12
  104. chia/_tests/core/util/test_block_cache.py +5 -5
  105. chia/_tests/core/util/test_cached_bls.py +3 -3
  106. chia/_tests/core/util/test_config.py +13 -13
  107. chia/_tests/core/util/test_files.py +2 -2
  108. chia/_tests/core/util/test_jsonify.py +9 -9
  109. chia/_tests/core/util/test_keychain.py +13 -5
  110. chia/_tests/core/util/test_keyring_wrapper.py +6 -5
  111. chia/_tests/core/util/test_log_exceptions.py +3 -3
  112. chia/_tests/core/util/test_streamable.py +38 -38
  113. chia/_tests/db/test_db_wrapper.py +13 -12
  114. chia/_tests/environments/common.py +2 -2
  115. chia/_tests/environments/full_node.py +2 -2
  116. chia/_tests/environments/wallet.py +109 -48
  117. chia/_tests/farmer_harvester/test_farmer.py +35 -35
  118. chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
  119. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  120. chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
  121. chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
  122. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
  123. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
  124. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
  125. chia/_tests/generator/test_compression.py +13 -30
  126. chia/_tests/generator/test_generator_types.py +3 -3
  127. chia/_tests/generator/test_rom.py +7 -9
  128. chia/_tests/plot_sync/test_delta.py +2 -3
  129. chia/_tests/plot_sync/test_plot_sync.py +25 -24
  130. chia/_tests/plot_sync/test_receiver.py +9 -9
  131. chia/_tests/plot_sync/test_sender.py +1 -1
  132. chia/_tests/plot_sync/test_sync_simulated.py +27 -26
  133. chia/_tests/plot_sync/util.py +2 -1
  134. chia/_tests/plotting/test_plot_manager.py +54 -11
  135. chia/_tests/plotting/util.py +2 -3
  136. chia/_tests/pools/test_pool_cli_parsing.py +128 -0
  137. chia/_tests/pools/test_pool_cmdline.py +993 -15
  138. chia/_tests/pools/test_pool_config.py +3 -5
  139. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
  140. chia/_tests/pools/test_pool_rpc.py +203 -90
  141. chia/_tests/pools/test_pool_wallet.py +12 -8
  142. chia/_tests/pools/test_wallet_pool_store.py +3 -3
  143. chia/_tests/process_junit.py +16 -17
  144. chia/_tests/rpc/test_rpc_client.py +59 -2
  145. chia/_tests/rpc/test_rpc_server.py +183 -0
  146. chia/_tests/simulation/test_simulation.py +5 -5
  147. chia/_tests/simulation/test_simulator.py +8 -10
  148. chia/_tests/simulation/test_start_simulator.py +5 -4
  149. chia/_tests/timelord/test_new_peak.py +19 -19
  150. chia/_tests/tools/test_run_block.py +1 -2
  151. chia/_tests/tools/test_virtual_project.py +591 -0
  152. chia/_tests/util/benchmark_cost.py +9 -9
  153. chia/_tests/util/benchmarks.py +1 -2
  154. chia/_tests/util/blockchain.py +12 -11
  155. chia/_tests/util/blockchain_mock.py +15 -15
  156. chia/_tests/util/build_network_protocol_files.py +12 -12
  157. chia/_tests/util/db_connection.py +3 -2
  158. chia/_tests/util/full_sync.py +14 -6
  159. chia/_tests/util/gen_ssl_certs.py +4 -5
  160. chia/_tests/util/generator_tools_testing.py +5 -7
  161. chia/_tests/util/get_name_puzzle_conditions.py +52 -0
  162. chia/_tests/util/key_tool.py +2 -3
  163. chia/_tests/util/misc.py +59 -106
  164. chia/_tests/util/network_protocol_data.py +7 -9
  165. chia/_tests/util/protocol_messages_json.py +112 -111
  166. chia/_tests/util/rpc.py +3 -0
  167. chia/_tests/util/run_block.py +16 -16
  168. chia/_tests/util/setup_nodes.py +25 -23
  169. chia/{clvm → _tests/util}/spend_sim.py +59 -55
  170. chia/_tests/util/split_managers.py +12 -9
  171. chia/_tests/util/temp_file.py +1 -1
  172. chia/_tests/util/test_action_scope.py +2 -1
  173. chia/_tests/util/test_async_pool.py +8 -8
  174. chia/_tests/util/test_build_job_matrix.py +2 -3
  175. chia/_tests/util/test_condition_tools.py +4 -6
  176. chia/_tests/util/test_config.py +5 -5
  177. chia/_tests/util/test_dump_keyring.py +1 -1
  178. chia/_tests/util/test_full_block_utils.py +19 -11
  179. chia/_tests/util/test_limited_semaphore.py +4 -3
  180. chia/_tests/util/test_logging_filter.py +2 -3
  181. chia/_tests/util/test_misc.py +29 -28
  182. chia/_tests/util/test_network.py +32 -31
  183. chia/_tests/util/test_network_protocol_files.py +2 -3
  184. chia/_tests/util/test_network_protocol_json.py +1 -0
  185. chia/_tests/util/test_network_protocol_test.py +18 -19
  186. chia/_tests/util/test_paginator.py +3 -4
  187. chia/_tests/util/test_pprint.py +1 -1
  188. chia/_tests/util/test_priority_mutex.py +18 -17
  189. chia/_tests/util/test_recursive_replace.py +2 -2
  190. chia/_tests/util/test_testnet_overrides.py +3 -3
  191. chia/_tests/util/test_timing.py +1 -1
  192. chia/_tests/util/test_trusted_peer.py +2 -2
  193. chia/_tests/util/time_out_assert.py +43 -6
  194. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
  195. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
  196. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
  197. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
  198. chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
  199. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
  200. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
  201. chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
  202. chia/_tests/wallet/conftest.py +135 -74
  203. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
  204. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
  205. chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
  206. chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
  207. chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
  208. chia/_tests/wallet/did_wallet/test_did.py +1277 -474
  209. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
  210. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
  211. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
  212. chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
  213. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
  214. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
  215. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
  216. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
  217. chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
  218. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
  219. chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
  220. chia/_tests/wallet/test_address_type.py +20 -20
  221. chia/_tests/wallet/test_clvm_streamable.py +5 -5
  222. chia/_tests/wallet/test_coin_management.py +354 -0
  223. chia/_tests/wallet/test_coin_selection.py +34 -35
  224. chia/_tests/wallet/test_conditions.py +28 -16
  225. chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
  226. chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
  227. chia/_tests/wallet/test_nft_store.py +1 -2
  228. chia/_tests/wallet/test_notifications.py +2 -2
  229. chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
  230. chia/_tests/wallet/test_puzzle_store.py +2 -3
  231. chia/_tests/wallet/test_sign_coin_spends.py +3 -3
  232. chia/_tests/wallet/test_signer_protocol.py +33 -34
  233. chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
  234. chia/_tests/wallet/test_taproot.py +1 -1
  235. chia/_tests/wallet/test_transaction_store.py +23 -19
  236. chia/_tests/wallet/test_util.py +36 -32
  237. chia/_tests/wallet/test_wallet.py +37 -37
  238. chia/_tests/wallet/test_wallet_action_scope.py +8 -8
  239. chia/_tests/wallet/test_wallet_blockchain.py +4 -6
  240. chia/_tests/wallet/test_wallet_coin_store.py +34 -34
  241. chia/_tests/wallet/test_wallet_node.py +69 -72
  242. chia/_tests/wallet/test_wallet_retry.py +3 -3
  243. chia/_tests/wallet/test_wallet_state_manager.py +12 -5
  244. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  245. chia/_tests/wallet/test_wallet_utils.py +5 -4
  246. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
  247. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
  248. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
  249. chia/_tests/wallet/wallet_block_tools.py +27 -27
  250. chia/_tests/weight_proof/test_weight_proof.py +30 -30
  251. chia/apis.py +19 -0
  252. chia/cmds/beta.py +8 -7
  253. chia/cmds/beta_funcs.py +15 -11
  254. chia/cmds/check_wallet_db.py +29 -27
  255. chia/cmds/chia.py +17 -9
  256. chia/cmds/cmd_classes.py +87 -79
  257. chia/cmds/cmd_helpers.py +242 -0
  258. chia/cmds/cmds_util.py +56 -66
  259. chia/cmds/coin_funcs.py +168 -153
  260. chia/cmds/coins.py +156 -194
  261. chia/cmds/configure.py +4 -3
  262. chia/cmds/dao.py +89 -33
  263. chia/cmds/dao_funcs.py +55 -33
  264. chia/cmds/data.py +7 -6
  265. chia/cmds/data_funcs.py +26 -21
  266. chia/cmds/db.py +4 -3
  267. chia/cmds/db_backup_func.py +2 -2
  268. chia/cmds/db_upgrade_func.py +3 -3
  269. chia/cmds/db_validate_func.py +2 -2
  270. chia/cmds/dev.py +2 -0
  271. chia/cmds/farm.py +18 -5
  272. chia/cmds/farm_funcs.py +17 -24
  273. chia/cmds/gh.py +275 -0
  274. chia/cmds/init.py +4 -11
  275. chia/cmds/init_funcs.py +9 -9
  276. chia/cmds/installers.py +5 -3
  277. chia/cmds/keys.py +56 -39
  278. chia/cmds/keys_funcs.py +30 -31
  279. chia/cmds/netspace.py +6 -3
  280. chia/cmds/netspace_funcs.py +3 -2
  281. chia/cmds/param_types.py +16 -6
  282. chia/cmds/passphrase.py +8 -7
  283. chia/cmds/passphrase_funcs.py +7 -61
  284. chia/cmds/peer.py +2 -1
  285. chia/cmds/peer_funcs.py +5 -5
  286. chia/cmds/plotnft.py +207 -153
  287. chia/cmds/plotnft_funcs.py +205 -174
  288. chia/cmds/plots.py +14 -6
  289. chia/cmds/plotters.py +2 -1
  290. chia/cmds/rpc.py +48 -28
  291. chia/cmds/show.py +2 -1
  292. chia/cmds/show_funcs.py +7 -6
  293. chia/cmds/signer.py +50 -58
  294. chia/cmds/sim.py +22 -14
  295. chia/cmds/sim_funcs.py +11 -11
  296. chia/cmds/start.py +3 -3
  297. chia/cmds/start_funcs.py +9 -12
  298. chia/cmds/stop.py +4 -3
  299. chia/cmds/units.py +1 -3
  300. chia/cmds/wallet.py +252 -96
  301. chia/cmds/wallet_funcs.py +217 -143
  302. chia/consensus/block_body_validation.py +133 -86
  303. chia/consensus/block_creation.py +42 -21
  304. chia/consensus/block_header_validation.py +32 -37
  305. chia/consensus/block_record.py +1 -2
  306. chia/consensus/blockchain.py +167 -180
  307. chia/consensus/blockchain_interface.py +10 -10
  308. chia/consensus/constants.py +2 -2
  309. chia/consensus/default_constants.py +3 -4
  310. chia/consensus/difficulty_adjustment.py +5 -5
  311. chia/consensus/find_fork_point.py +5 -5
  312. chia/consensus/full_block_to_block_record.py +4 -4
  313. chia/consensus/get_block_challenge.py +2 -2
  314. chia/consensus/get_block_generator.py +4 -3
  315. chia/consensus/multiprocess_validation.py +207 -304
  316. chia/consensus/vdf_info_computation.py +3 -3
  317. chia/daemon/client.py +46 -27
  318. chia/daemon/keychain_proxy.py +10 -9
  319. chia/daemon/keychain_server.py +18 -18
  320. chia/daemon/server.py +103 -113
  321. chia/daemon/windows_signal.py +2 -2
  322. chia/data_layer/data_layer.py +64 -76
  323. chia/data_layer/data_layer_api.py +8 -0
  324. chia/data_layer/data_layer_errors.py +3 -3
  325. chia/data_layer/data_layer_server.py +2 -2
  326. chia/data_layer/data_layer_util.py +71 -71
  327. chia/data_layer/data_layer_wallet.py +63 -67
  328. chia/data_layer/data_store.py +72 -72
  329. chia/data_layer/dl_wallet_store.py +10 -10
  330. chia/data_layer/download_data.py +5 -5
  331. chia/data_layer/s3_plugin_service.py +9 -9
  332. chia/data_layer/util/benchmark.py +0 -1
  333. chia/data_layer/util/plugin.py +2 -3
  334. chia/farmer/farmer.py +46 -43
  335. chia/farmer/farmer_api.py +27 -21
  336. chia/full_node/block_height_map.py +6 -6
  337. chia/full_node/block_store.py +41 -35
  338. chia/full_node/coin_store.py +42 -41
  339. chia/full_node/fee_estimate.py +2 -2
  340. chia/full_node/fee_estimation.py +1 -2
  341. chia/full_node/fee_history.py +5 -6
  342. chia/full_node/fee_tracker.py +24 -24
  343. chia/full_node/full_node.py +574 -300
  344. chia/full_node/full_node_api.py +181 -130
  345. chia/full_node/full_node_store.py +43 -43
  346. chia/full_node/hint_management.py +4 -4
  347. chia/full_node/hint_store.py +9 -10
  348. chia/full_node/mempool.py +25 -19
  349. chia/full_node/mempool_check_conditions.py +11 -42
  350. chia/full_node/mempool_manager.py +48 -53
  351. chia/full_node/pending_tx_cache.py +9 -9
  352. chia/full_node/subscriptions.py +23 -24
  353. chia/full_node/sync_store.py +8 -7
  354. chia/full_node/tx_processing_queue.py +3 -3
  355. chia/full_node/util/__init__.py +0 -0
  356. chia/full_node/weight_proof.py +79 -78
  357. chia/harvester/harvester.py +9 -8
  358. chia/harvester/harvester_api.py +19 -13
  359. chia/introducer/introducer.py +7 -5
  360. chia/introducer/introducer_api.py +9 -3
  361. chia/legacy/keyring.py +6 -5
  362. chia/plot_sync/delta.py +8 -8
  363. chia/plot_sync/receiver.py +12 -11
  364. chia/plot_sync/sender.py +15 -12
  365. chia/plotters/bladebit.py +12 -12
  366. chia/plotters/chiapos.py +2 -2
  367. chia/plotters/madmax.py +8 -8
  368. chia/plotters/plotters.py +6 -6
  369. chia/plotters/plotters_util.py +6 -4
  370. chia/plotting/cache.py +8 -7
  371. chia/plotting/check_plots.py +8 -8
  372. chia/plotting/create_plots.py +6 -6
  373. chia/plotting/manager.py +22 -22
  374. chia/plotting/util.py +31 -19
  375. chia/pools/pool_config.py +7 -7
  376. chia/pools/pool_puzzles.py +16 -16
  377. chia/pools/pool_wallet.py +64 -57
  378. chia/pools/pool_wallet_info.py +3 -3
  379. chia/protocols/full_node_protocol.py +3 -3
  380. chia/protocols/harvester_protocol.py +12 -12
  381. chia/protocols/introducer_protocol.py +1 -2
  382. chia/protocols/protocol_message_types.py +4 -4
  383. chia/protocols/protocol_state_machine.py +2 -2
  384. chia/protocols/protocol_timing.py +1 -0
  385. chia/protocols/shared_protocol.py +3 -3
  386. chia/protocols/timelord_protocol.py +2 -2
  387. chia/protocols/wallet_protocol.py +33 -33
  388. chia/rpc/crawler_rpc_api.py +12 -7
  389. chia/rpc/data_layer_rpc_api.py +49 -44
  390. chia/rpc/data_layer_rpc_client.py +41 -41
  391. chia/rpc/data_layer_rpc_util.py +7 -11
  392. chia/rpc/farmer_rpc_api.py +32 -27
  393. chia/rpc/farmer_rpc_client.py +14 -14
  394. chia/rpc/full_node_rpc_api.py +53 -48
  395. chia/rpc/full_node_rpc_client.py +30 -30
  396. chia/rpc/harvester_rpc_api.py +16 -11
  397. chia/rpc/harvester_rpc_client.py +6 -6
  398. chia/rpc/rpc_client.py +34 -14
  399. chia/rpc/rpc_server.py +117 -43
  400. chia/rpc/timelord_rpc_api.py +9 -4
  401. chia/rpc/util.py +11 -211
  402. chia/rpc/wallet_request_types.py +276 -60
  403. chia/rpc/wallet_rpc_api.py +563 -399
  404. chia/rpc/wallet_rpc_client.py +220 -250
  405. chia/seeder/crawl_store.py +6 -8
  406. chia/seeder/crawler.py +23 -36
  407. chia/seeder/crawler_api.py +28 -22
  408. chia/seeder/dns_server.py +99 -50
  409. chia/seeder/start_crawler.py +13 -9
  410. chia/server/address_manager.py +19 -19
  411. chia/server/address_manager_store.py +17 -17
  412. chia/server/api_protocol.py +106 -1
  413. chia/server/capabilities.py +3 -3
  414. chia/server/chia_policy.py +17 -16
  415. chia/server/introducer_peers.py +3 -3
  416. chia/server/node_discovery.py +34 -38
  417. chia/server/rate_limit_numbers.py +26 -16
  418. chia/server/rate_limits.py +67 -27
  419. chia/server/server.py +52 -31
  420. chia/server/signal_handlers.py +6 -3
  421. chia/server/ssl_context.py +5 -5
  422. chia/server/start_data_layer.py +37 -23
  423. chia/server/start_farmer.py +28 -16
  424. chia/server/start_full_node.py +29 -23
  425. chia/server/start_harvester.py +28 -15
  426. chia/server/start_introducer.py +27 -15
  427. chia/server/start_service.py +17 -29
  428. chia/server/start_timelord.py +25 -18
  429. chia/server/start_wallet.py +22 -18
  430. chia/server/upnp.py +4 -3
  431. chia/server/ws_connection.py +68 -54
  432. chia/simulator/add_blocks_in_batches.py +54 -0
  433. chia/simulator/block_tools.py +65 -64
  434. chia/simulator/full_node_simulator.py +66 -74
  435. chia/simulator/setup_services.py +10 -9
  436. chia/simulator/simulator_full_node_rpc_api.py +12 -14
  437. chia/simulator/simulator_full_node_rpc_client.py +3 -5
  438. chia/simulator/simulator_test_tools.py +8 -7
  439. chia/simulator/socket.py +1 -4
  440. chia/simulator/ssl_certs.py +5 -5
  441. chia/simulator/ssl_certs_1.py +2 -4
  442. chia/simulator/ssl_certs_10.py +2 -4
  443. chia/simulator/ssl_certs_2.py +2 -4
  444. chia/simulator/ssl_certs_3.py +2 -4
  445. chia/simulator/ssl_certs_4.py +2 -4
  446. chia/simulator/ssl_certs_5.py +2 -4
  447. chia/simulator/ssl_certs_6.py +2 -4
  448. chia/simulator/ssl_certs_7.py +2 -4
  449. chia/simulator/ssl_certs_8.py +2 -4
  450. chia/simulator/ssl_certs_9.py +2 -4
  451. chia/simulator/start_simulator.py +14 -6
  452. chia/simulator/wallet_tools.py +21 -20
  453. chia/ssl/create_ssl.py +11 -11
  454. chia/timelord/iters_from_block.py +2 -2
  455. chia/timelord/timelord.py +57 -33
  456. chia/timelord/timelord_api.py +12 -6
  457. chia/timelord/timelord_launcher.py +10 -8
  458. chia/timelord/timelord_state.py +5 -5
  459. chia/types/block_protocol.py +2 -2
  460. chia/types/blockchain_format/coin.py +3 -3
  461. chia/types/blockchain_format/program.py +17 -18
  462. chia/types/blockchain_format/tree_hash.py +9 -9
  463. chia/types/coin_spend.py +8 -8
  464. chia/types/condition_with_args.py +1 -2
  465. chia/types/eligible_coin_spends.py +16 -15
  466. chia/types/generator_types.py +1 -2
  467. chia/types/internal_mempool_item.py +1 -2
  468. chia/types/mempool_item.py +7 -7
  469. chia/types/mempool_submission_status.py +2 -2
  470. chia/types/peer_info.py +1 -1
  471. chia/types/spend_bundle.py +1 -2
  472. chia/types/transaction_queue_entry.py +2 -2
  473. chia/types/unfinished_header_block.py +2 -2
  474. chia/types/validation_state.py +14 -0
  475. chia/types/weight_proof.py +5 -6
  476. chia/util/action_scope.py +8 -8
  477. chia/util/async_pool.py +6 -4
  478. chia/util/augmented_chain.py +13 -9
  479. chia/util/batches.py +5 -2
  480. chia/util/bech32m.py +14 -11
  481. chia/util/beta_metrics.py +5 -4
  482. chia/util/block_cache.py +5 -5
  483. chia/util/byte_types.py +2 -0
  484. chia/util/check_fork_next_block.py +3 -2
  485. chia/util/chia_logging.py +41 -21
  486. chia/util/collection.py +3 -3
  487. chia/util/condition_tools.py +18 -18
  488. chia/util/config.py +26 -25
  489. chia/util/cpu.py +2 -0
  490. chia/util/db_synchronous.py +2 -0
  491. chia/util/db_version.py +2 -0
  492. chia/util/db_wrapper.py +13 -10
  493. chia/util/default_root.py +17 -0
  494. chia/util/dump_keyring.py +6 -6
  495. chia/util/errors.py +5 -3
  496. chia/util/file_keyring.py +22 -33
  497. chia/util/files.py +2 -0
  498. chia/util/full_block_utils.py +31 -7
  499. chia/util/generator_tools.py +18 -8
  500. chia/util/hash.py +3 -1
  501. chia/util/initial-config.yaml +19 -0
  502. chia/util/inline_executor.py +2 -0
  503. chia/util/ip_address.py +39 -0
  504. chia/util/json_util.py +0 -4
  505. chia/util/keychain.py +27 -24
  506. chia/util/keyring_wrapper.py +65 -4
  507. chia/util/limited_semaphore.py +3 -1
  508. chia/util/lock.py +4 -2
  509. chia/util/log_exceptions.py +5 -2
  510. chia/util/logging.py +3 -1
  511. chia/util/lru_cache.py +2 -0
  512. chia/util/math.py +4 -4
  513. chia/util/network.py +15 -73
  514. chia/util/paginator.py +3 -1
  515. chia/util/path.py +2 -0
  516. chia/util/permissions.py +3 -2
  517. chia/util/prev_transaction_block.py +1 -3
  518. chia/util/priority_mutex.py +6 -3
  519. chia/util/profiler.py +7 -4
  520. chia/util/recursive_replace.py +2 -0
  521. chia/util/safe_cancel_task.py +2 -0
  522. chia/util/service_groups.py +2 -2
  523. chia/util/setproctitle.py +2 -0
  524. chia/util/significant_bits.py +2 -0
  525. chia/util/ssl_check.py +11 -11
  526. chia/util/streamable.py +44 -56
  527. chia/util/task_referencer.py +59 -0
  528. chia/util/task_timing.py +22 -18
  529. chia/util/timing.py +4 -1
  530. chia/util/vdf_prover.py +2 -3
  531. chia/util/virtual_project_analysis.py +540 -0
  532. chia/util/ws_message.py +6 -6
  533. chia/wallet/cat_wallet/cat_info.py +3 -3
  534. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
  535. chia/wallet/cat_wallet/cat_utils.py +5 -4
  536. chia/wallet/cat_wallet/cat_wallet.py +56 -70
  537. chia/wallet/cat_wallet/dao_cat_info.py +3 -3
  538. chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
  539. chia/wallet/cat_wallet/lineage_store.py +2 -2
  540. chia/wallet/coin_selection.py +15 -15
  541. chia/wallet/conditions.py +257 -71
  542. chia/wallet/dao_wallet/dao_info.py +4 -4
  543. chia/wallet/dao_wallet/dao_utils.py +43 -42
  544. chia/wallet/dao_wallet/dao_wallet.py +66 -68
  545. chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
  546. chia/wallet/derive_keys.py +11 -11
  547. chia/wallet/did_wallet/did_info.py +3 -3
  548. chia/wallet/did_wallet/did_wallet.py +56 -47
  549. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
  550. chia/wallet/lineage_proof.py +4 -4
  551. chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
  552. chia/wallet/nft_wallet/nft_info.py +4 -4
  553. chia/wallet/nft_wallet/nft_puzzles.py +16 -16
  554. chia/wallet/nft_wallet/nft_wallet.py +90 -89
  555. chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
  556. chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
  557. chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
  558. chia/wallet/nft_wallet/uncurry_nft.py +2 -2
  559. chia/wallet/notification_manager.py +5 -5
  560. chia/wallet/notification_store.py +6 -6
  561. chia/wallet/outer_puzzles.py +2 -2
  562. chia/wallet/payment.py +4 -5
  563. chia/wallet/puzzle_drivers.py +4 -4
  564. chia/wallet/puzzles/clawback/drivers.py +5 -5
  565. chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
  566. chia/wallet/puzzles/load_clvm.py +2 -3
  567. chia/wallet/puzzles/p2_conditions.py +1 -2
  568. chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
  569. chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
  570. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
  571. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
  572. chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
  573. chia/wallet/puzzles/puzzle_utils.py +7 -7
  574. chia/wallet/puzzles/singleton_top_layer.py +6 -5
  575. chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
  576. chia/wallet/puzzles/tails.py +34 -30
  577. chia/wallet/signer_protocol.py +7 -8
  578. chia/wallet/singleton.py +4 -4
  579. chia/wallet/trade_manager.py +155 -141
  580. chia/wallet/trade_record.py +5 -5
  581. chia/wallet/trading/offer.py +100 -101
  582. chia/wallet/trading/trade_store.py +14 -14
  583. chia/wallet/transaction_record.py +31 -16
  584. chia/wallet/util/address_type.py +4 -4
  585. chia/wallet/util/blind_signer_tl.py +8 -12
  586. chia/wallet/util/clvm_streamable.py +15 -15
  587. chia/wallet/util/compute_hints.py +5 -5
  588. chia/wallet/util/compute_memos.py +4 -6
  589. chia/wallet/util/curry_and_treehash.py +3 -2
  590. chia/wallet/util/debug_spend_bundle.py +6 -8
  591. chia/wallet/util/merkle_tree.py +10 -10
  592. chia/wallet/util/merkle_utils.py +10 -10
  593. chia/wallet/util/new_peak_queue.py +3 -3
  594. chia/wallet/util/peer_request_cache.py +8 -8
  595. chia/{util → wallet/util}/pprint.py +2 -3
  596. chia/wallet/util/puzzle_compression.py +3 -4
  597. chia/wallet/util/puzzle_decorator.py +10 -10
  598. chia/wallet/util/query_filter.py +9 -10
  599. chia/wallet/util/tx_config.py +12 -12
  600. chia/wallet/util/wallet_sync_utils.py +24 -21
  601. chia/wallet/util/wallet_types.py +9 -2
  602. chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
  603. chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
  604. chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
  605. chia/wallet/vc_wallet/vc_drivers.py +16 -16
  606. chia/wallet/vc_wallet/vc_store.py +9 -9
  607. chia/wallet/vc_wallet/vc_wallet.py +35 -35
  608. chia/wallet/wallet.py +54 -54
  609. chia/wallet/wallet_action_scope.py +14 -13
  610. chia/wallet/wallet_blockchain.py +10 -10
  611. chia/wallet/wallet_coin_record.py +2 -2
  612. chia/wallet/wallet_coin_store.py +10 -10
  613. chia/wallet/wallet_info.py +1 -2
  614. chia/wallet/wallet_interested_store.py +5 -5
  615. chia/wallet/wallet_nft_store.py +6 -6
  616. chia/wallet/wallet_node.py +72 -76
  617. chia/wallet/wallet_node_api.py +33 -27
  618. chia/wallet/wallet_pool_store.py +1 -2
  619. chia/wallet/wallet_protocol.py +15 -15
  620. chia/wallet/wallet_puzzle_store.py +35 -4
  621. chia/wallet/wallet_retry_store.py +2 -2
  622. chia/wallet/wallet_singleton_store.py +10 -9
  623. chia/wallet/wallet_spend_bundle.py +4 -20
  624. chia/wallet/wallet_state_manager.py +223 -224
  625. chia/wallet/wallet_transaction_store.py +44 -18
  626. chia/wallet/wallet_user_store.py +2 -2
  627. chia/wallet/wallet_weight_proof_handler.py +2 -2
  628. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
  632. mozilla-ca/cacert.pem +32 -87
  633. chia/_tests/cmds/wallet/test_coins.py +0 -195
  634. chia/consensus/block_root_validation.py +0 -46
  635. chia/util/api_decorators.py +0 -89
  636. chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +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, Dict, List, Optional, Tuple
6
+ from typing import Callable, Optional
7
7
 
8
8
  import pytest
9
9
  from chia_rs import G1Element, G2Element, get_flags_for_height_and_constants
@@ -24,6 +24,7 @@ from chia._tests.core.mempool.test_mempool_manager import (
24
24
  spend_bundle_from_conditions,
25
25
  )
26
26
  from chia._tests.core.node_height import node_height_at_least
27
+ from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
27
28
  from chia._tests.util.misc import BenchmarkRunner, invariant_check_mempool
28
29
  from chia._tests.util.time_out_assert import time_out_assert
29
30
  from chia.consensus.condition_costs import ConditionCost
@@ -33,14 +34,16 @@ from chia.full_node.bitcoin_fee_estimator import create_bitcoin_fee_estimator
33
34
  from chia.full_node.fee_estimation import EmptyMempoolInfo, MempoolInfo
34
35
  from chia.full_node.full_node_api import FullNodeAPI
35
36
  from chia.full_node.mempool import Mempool
36
- from chia.full_node.mempool_check_conditions import get_name_puzzle_conditions, get_puzzle_and_solution_for_coin
37
+ from chia.full_node.mempool_check_conditions import get_puzzle_and_solution_for_coin
37
38
  from chia.full_node.mempool_manager import MEMPOOL_MIN_FEE_INCREASE
38
39
  from chia.full_node.pending_tx_cache import ConflictTxCache, PendingTxCache
39
40
  from chia.protocols import full_node_protocol, wallet_protocol
40
41
  from chia.protocols.wallet_protocol import TransactionAck
42
+ from chia.server.api_protocol import ApiMetadata
41
43
  from chia.server.outbound_message import Message
42
44
  from chia.server.server import ChiaServer
43
45
  from chia.server.ws_connection import WSChiaConnection
46
+ from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
44
47
  from chia.simulator.block_tools import BlockTools, test_constants
45
48
  from chia.simulator.full_node_simulator import FullNodeSimulator
46
49
  from chia.simulator.simulator_protocol import FarmNewBlockProtocol
@@ -61,7 +64,6 @@ from chia.types.mempool_inclusion_status import MempoolInclusionStatus
61
64
  from chia.types.mempool_item import MempoolItem
62
65
  from chia.types.spend_bundle import SpendBundle, estimate_fees
63
66
  from chia.types.spend_bundle_conditions import SpendBundleConditions
64
- from chia.util.api_decorators import api_request
65
67
  from chia.util.errors import Err
66
68
  from chia.util.hash import std_hash
67
69
  from chia.util.ints import uint32, uint64
@@ -90,7 +92,7 @@ def wallet_a(bt: BlockTools) -> WalletTool:
90
92
  def generate_test_spend_bundle(
91
93
  wallet: WalletTool,
92
94
  coin: Coin,
93
- condition_dic: Optional[Dict[ConditionOpcode, List[ConditionWithArgs]]] = None,
95
+ condition_dic: Optional[dict[ConditionOpcode, list[ConditionWithArgs]]] = None,
94
96
  fee: uint64 = uint64(0),
95
97
  amount: uint64 = uint64(1000),
96
98
  new_puzzle_hash: bytes32 = BURN_PUZZLE_HASH,
@@ -109,7 +111,7 @@ def make_item(
109
111
  return MempoolItem(
110
112
  SpendBundle([], G2Element()),
111
113
  fee,
112
- SpendBundleConditions([], 0, 0, 0, None, None, [], cost, 0, 0, False),
114
+ SpendBundleConditions([], 0, 0, 0, None, None, [], cost, 0, 0, False, 0, 0),
113
115
  spend_bundle_name,
114
116
  uint32(0),
115
117
  assert_height,
@@ -307,9 +309,9 @@ class TestPendingTxCache:
307
309
  class TestMempool:
308
310
  @pytest.mark.anyio
309
311
  async def test_basic_mempool(
310
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
312
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
311
313
  ) -> None:
312
- full_node_1, server_1, bt = one_node_one_block
314
+ full_node_1, _server_1, bt = one_node_one_block
313
315
 
314
316
  _ = await next_block(full_node_1, wallet_a, bt)
315
317
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -328,14 +330,19 @@ class TestMempool:
328
330
  assert spend_bundle is not None
329
331
 
330
332
 
331
- @api_request(peer_required=True, bytes_required=True)
333
+ metadata = ApiMetadata()
334
+
335
+
336
+ # this (method'ish) function is not designed per normal uses so allowing the ignore
337
+ # for the different return type. normal is Optional[Message]
338
+ @metadata.request(peer_required=True, bytes_required=True) # type: ignore[type-var]
332
339
  async def respond_transaction(
333
340
  self: FullNodeAPI,
334
341
  tx: full_node_protocol.RespondTransaction,
335
342
  peer: WSChiaConnection,
336
343
  tx_bytes: bytes = b"",
337
344
  test: bool = False,
338
- ) -> Tuple[MempoolInclusionStatus, Optional[Err]]:
345
+ ) -> tuple[MempoolInclusionStatus, Optional[Err]]:
339
346
  """
340
347
  Receives a full transaction from peer.
341
348
  If tx is added to mempool, send tx_id to others. (new_transaction)
@@ -367,8 +374,7 @@ async def next_block(full_node_1: FullNodeSimulator, wallet_a: WalletTool, bt: B
367
374
  time_per_block=10,
368
375
  )
369
376
 
370
- for block in blocks:
371
- await full_node_1.full_node.add_block(block)
377
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
372
378
 
373
379
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 1)
374
380
  return blocks[-1].get_included_reward_coins()[0]
@@ -394,11 +400,11 @@ class TestMempoolManager:
394
400
  @pytest.mark.anyio
395
401
  async def test_basic_mempool_manager(
396
402
  self,
397
- two_nodes_one_block: Tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
403
+ two_nodes_one_block: tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
398
404
  wallet_a: WalletTool,
399
405
  self_hostname: str,
400
406
  ) -> None:
401
- full_node_1, full_node_2, server_1, server_2, bt = two_nodes_one_block
407
+ full_node_1, _full_node_2, server_1, server_2, bt = two_nodes_one_block
402
408
 
403
409
  peer = await connect_and_get_peer(server_1, server_2, self_hostname)
404
410
 
@@ -455,7 +461,7 @@ class TestMempoolManager:
455
461
  )
456
462
  async def test_ephemeral_timelock(
457
463
  self,
458
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
464
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
459
465
  wallet_a: WalletTool,
460
466
  opcode: ConditionOpcode,
461
467
  lock_value: int,
@@ -473,10 +479,10 @@ class TestMempoolManager:
473
479
  bundle = SpendBundle.aggregate([tx1, tx2])
474
480
  return bundle
475
481
 
476
- full_node_1, server_1, bt = one_node_one_block
482
+ full_node_1, _server_1, bt = one_node_one_block
477
483
  _ = await next_block(full_node_1, wallet_a, bt)
478
484
  _ = await next_block(full_node_1, wallet_a, bt)
479
- blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
485
+ _blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
480
486
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(bundle.name())
481
487
 
482
488
  print(f"opcode={opcode} timelock_value={lock_value} expected={expected} status={status}")
@@ -495,7 +501,7 @@ class TestMempoolManager:
495
501
  # another spend, even though the assert condition is duplicated 100 times
496
502
  @pytest.mark.anyio
497
503
  async def test_coin_announcement_duplicate_consumed(
498
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
504
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
499
505
  ) -> None:
500
506
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
501
507
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=b"test")
@@ -509,8 +515,8 @@ class TestMempoolManager:
509
515
  bundle = SpendBundle.aggregate([spend_bundle1, spend_bundle2])
510
516
  return bundle
511
517
 
512
- full_node_1, server_1, bt = one_node_one_block
513
- blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
518
+ full_node_1, _server_1, _bt = one_node_one_block
519
+ _blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
514
520
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(bundle.name())
515
521
 
516
522
  assert err is None
@@ -521,7 +527,7 @@ class TestMempoolManager:
521
527
  # another spend, even though the create announcement is duplicated 100 times
522
528
  @pytest.mark.anyio
523
529
  async def test_coin_duplicate_announcement_consumed(
524
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
530
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
525
531
  ) -> None:
526
532
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
527
533
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=b"test")
@@ -535,8 +541,8 @@ class TestMempoolManager:
535
541
  bundle = SpendBundle.aggregate([spend_bundle1, spend_bundle2])
536
542
  return bundle
537
543
 
538
- full_node_1, server_1, bt = one_node_one_block
539
- blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
544
+ full_node_1, _server_1, _bt = one_node_one_block
545
+ _blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
540
546
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(bundle.name())
541
547
 
542
548
  assert err is None
@@ -546,12 +552,12 @@ class TestMempoolManager:
546
552
  @pytest.mark.anyio
547
553
  async def test_double_spend(
548
554
  self,
549
- two_nodes_one_block: Tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
555
+ two_nodes_one_block: tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
550
556
  wallet_a: WalletTool,
551
557
  self_hostname: str,
552
558
  ) -> None:
553
559
  reward_ph = wallet_a.get_new_puzzlehash()
554
- full_node_1, full_node_2, server_1, server_2, bt = two_nodes_one_block
560
+ full_node_1, _full_node_2, server_1, server_2, bt = two_nodes_one_block
555
561
  blocks = await full_node_1.get_all_full_blocks()
556
562
  start_height = blocks[-1].height
557
563
  blocks = bt.get_consecutive_blocks(
@@ -563,8 +569,7 @@ class TestMempoolManager:
563
569
  )
564
570
  peer = await connect_and_get_peer(server_1, server_2, self_hostname)
565
571
 
566
- for block in blocks:
567
- await full_node_1.full_node.add_block(block)
572
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
568
573
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
569
574
 
570
575
  spend_bundle1 = generate_test_spend_bundle(wallet_a, blocks[-1].get_included_reward_coins()[0])
@@ -594,7 +599,7 @@ class TestMempoolManager:
594
599
 
595
600
  @pytest.mark.anyio
596
601
  async def test_double_spend_with_higher_fee(
597
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
602
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
598
603
  ) -> None:
599
604
  full_node_1, _, bt = one_node_one_block
600
605
  blocks = await full_node_1.get_all_full_blocks()
@@ -609,8 +614,7 @@ class TestMempoolManager:
609
614
  )
610
615
 
611
616
  invariant_check_mempool(full_node_1.full_node.mempool_manager.mempool)
612
- for block in blocks:
613
- await full_node_1.full_node.add_block(block)
617
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
614
618
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
615
619
 
616
620
  coins = iter(blocks[-1].get_included_reward_coins())
@@ -677,11 +681,11 @@ class TestMempoolManager:
677
681
 
678
682
  @pytest.mark.anyio
679
683
  async def test_invalid_signature(
680
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
684
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
681
685
  ) -> None:
682
686
  reward_ph = wallet_a.get_new_puzzlehash()
683
687
 
684
- full_node_1, server_1, bt = one_node_one_block
688
+ full_node_1, _server_1, bt = one_node_one_block
685
689
  blocks = await full_node_1.get_all_full_blocks()
686
690
  start_height = blocks[-1].height if len(blocks) > 0 else -1
687
691
  blocks = bt.get_consecutive_blocks(
@@ -692,8 +696,7 @@ class TestMempoolManager:
692
696
  pool_reward_puzzle_hash=reward_ph,
693
697
  )
694
698
 
695
- for block in blocks:
696
- await full_node_1.full_node.add_block(block)
699
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
697
700
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
698
701
 
699
702
  coins = iter(blocks[-1].get_included_reward_coins())
@@ -711,13 +714,13 @@ class TestMempoolManager:
711
714
 
712
715
  async def condition_tester(
713
716
  self,
714
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
717
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
715
718
  wallet_a: WalletTool,
716
- dic: Dict[ConditionOpcode, List[ConditionWithArgs]],
719
+ dic: dict[ConditionOpcode, list[ConditionWithArgs]],
717
720
  fee: int = 0,
718
721
  num_blocks: int = 3,
719
722
  coin: Optional[Coin] = None,
720
- ) -> Tuple[List[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus, Optional[Err]]:
723
+ ) -> tuple[list[FullBlock], SpendBundle, WSChiaConnection, MempoolInclusionStatus, Optional[Err]]:
721
724
  reward_ph = wallet_a.get_new_puzzlehash()
722
725
  full_node_1, server_1, bt = one_node_one_block
723
726
  blocks = await full_node_1.get_all_full_blocks()
@@ -737,13 +740,12 @@ class TestMempoolManager:
737
740
  else:
738
741
  raise Exception("dummy peer not found")
739
742
 
740
- for block in blocks:
741
- await full_node_1.full_node.add_block(block)
743
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
742
744
 
743
745
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + num_blocks)
744
746
 
745
747
  spend_bundle1 = generate_test_spend_bundle(
746
- wallet_a, coin or list(blocks[-num_blocks + 2].get_included_reward_coins())[0], dic, uint64(fee)
748
+ wallet_a, coin or blocks[-num_blocks + 2].get_included_reward_coins()[0], dic, uint64(fee)
747
749
  )
748
750
 
749
751
  assert spend_bundle1 is not None
@@ -756,10 +758,10 @@ class TestMempoolManager:
756
758
  @pytest.mark.anyio
757
759
  async def condition_tester2(
758
760
  self,
759
- node_server_bt: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
761
+ node_server_bt: tuple[FullNodeSimulator, ChiaServer, BlockTools],
760
762
  wallet_a: WalletTool,
761
763
  test_fun: Callable[[Coin, Coin], SpendBundle],
762
- ) -> Tuple[List[FullBlock], SpendBundle, MempoolInclusionStatus, Optional[Err]]:
764
+ ) -> tuple[list[FullBlock], SpendBundle, MempoolInclusionStatus, Optional[Err]]:
763
765
  reward_ph = wallet_a.get_new_puzzlehash()
764
766
  full_node_1, server_1, bt = node_server_bt
765
767
  blocks = await full_node_1.get_all_full_blocks()
@@ -780,8 +782,7 @@ class TestMempoolManager:
780
782
  else:
781
783
  raise Exception("dummy peer not found")
782
784
 
783
- for block in blocks:
784
- await full_node_1.full_node.add_block(block)
785
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
785
786
 
786
787
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
787
788
 
@@ -797,9 +798,9 @@ class TestMempoolManager:
797
798
 
798
799
  @pytest.mark.anyio
799
800
  async def test_invalid_block_index(
800
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
801
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
801
802
  ) -> None:
802
- full_node_1, server_1, bt = one_node_one_block
803
+ full_node_1, _server_1, _bt = one_node_one_block
803
804
  blocks = await full_node_1.get_all_full_blocks()
804
805
  start_height = blocks[-1].height
805
806
  cvp = ConditionWithArgs(
@@ -807,7 +808,7 @@ class TestMempoolManager:
807
808
  [int_to_bytes(start_height + 5)],
808
809
  )
809
810
  dic = {ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE: [cvp]}
810
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
811
+ blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
811
812
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
812
813
  assert sb1 is None
813
814
  # the transaction may become valid later
@@ -816,12 +817,12 @@ class TestMempoolManager:
816
817
 
817
818
  @pytest.mark.anyio
818
819
  async def test_block_index_missing_arg(
819
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
820
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
820
821
  ) -> None:
821
- full_node_1, server_1, bt = one_node_one_block
822
+ full_node_1, _server_1, _bt = one_node_one_block
822
823
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, [])
823
824
  dic = {ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE: [cvp]}
824
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
825
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
825
826
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
826
827
  assert sb1 is None
827
828
  # the transaction may become valid later
@@ -830,12 +831,12 @@ class TestMempoolManager:
830
831
 
831
832
  @pytest.mark.anyio
832
833
  async def test_correct_block_index(
833
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
834
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
834
835
  ) -> None:
835
- full_node_1, server_1, bt = one_node_one_block
836
+ full_node_1, _server_1, _bt = one_node_one_block
836
837
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, [int_to_bytes(1)])
837
838
  dic = {ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE: [cvp]}
838
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
839
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
839
840
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
840
841
  assert err is None
841
842
  assert sb1 == spend_bundle1
@@ -843,14 +844,14 @@ class TestMempoolManager:
843
844
 
844
845
  @pytest.mark.anyio
845
846
  async def test_block_index_garbage(
846
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
847
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
847
848
  ) -> None:
848
- full_node_1, server_1, bt = one_node_one_block
849
+ full_node_1, _server_1, _bt = one_node_one_block
849
850
  # garbage at the end of the argument list is ignored in consensus mode,
850
851
  # but not in mempool-mode
851
852
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, [int_to_bytes(1), b"garbage"])
852
853
  dic = {ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE: [cvp]}
853
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
854
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
854
855
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
855
856
  assert err is Err.INVALID_CONDITION
856
857
  assert sb1 is None
@@ -858,12 +859,12 @@ class TestMempoolManager:
858
859
 
859
860
  @pytest.mark.anyio
860
861
  async def test_negative_block_index(
861
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
862
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
862
863
  ) -> None:
863
- full_node_1, server_1, bt = one_node_one_block
864
+ full_node_1, _server_1, _bt = one_node_one_block
864
865
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, [int_to_bytes(-1)])
865
866
  dic = {ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE: [cvp]}
866
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
867
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
867
868
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
868
869
  assert err is None
869
870
  assert sb1 == spend_bundle1
@@ -871,12 +872,12 @@ class TestMempoolManager:
871
872
 
872
873
  @pytest.mark.anyio
873
874
  async def test_invalid_block_age(
874
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
875
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
875
876
  ) -> None:
876
- full_node_1, server_1, bt = one_node_one_block
877
+ full_node_1, _server_1, _bt = one_node_one_block
877
878
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, [int_to_bytes(5)])
878
879
  dic = {cvp.opcode: [cvp]}
879
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
880
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
880
881
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
881
882
  assert err == Err.ASSERT_HEIGHT_RELATIVE_FAILED
882
883
  assert sb1 is None
@@ -885,12 +886,12 @@ class TestMempoolManager:
885
886
 
886
887
  @pytest.mark.anyio
887
888
  async def test_block_age_missing_arg(
888
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
889
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
889
890
  ) -> None:
890
- full_node_1, server_1, bt = one_node_one_block
891
+ full_node_1, _server_1, _bt = one_node_one_block
891
892
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, [])
892
893
  dic = {cvp.opcode: [cvp]}
893
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
894
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
894
895
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
895
896
  assert err == Err.INVALID_CONDITION
896
897
  assert sb1 is None
@@ -899,12 +900,12 @@ class TestMempoolManager:
899
900
 
900
901
  @pytest.mark.anyio
901
902
  async def test_correct_block_age(
902
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
903
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
903
904
  ) -> None:
904
- full_node_1, server_1, bt = one_node_one_block
905
+ full_node_1, _server_1, _bt = one_node_one_block
905
906
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, [int_to_bytes(1)])
906
907
  dic = {cvp.opcode: [cvp]}
907
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
908
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
908
909
  one_node_one_block, wallet_a, dic, num_blocks=4
909
910
  )
910
911
 
@@ -915,14 +916,14 @@ class TestMempoolManager:
915
916
 
916
917
  @pytest.mark.anyio
917
918
  async def test_block_age_garbage(
918
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
919
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
919
920
  ) -> None:
920
- full_node_1, server_1, bt = one_node_one_block
921
+ full_node_1, _server_1, _bt = one_node_one_block
921
922
  # garbage at the end of the argument list is ignored in consensus mode,
922
923
  # but not in mempool mode
923
924
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, [int_to_bytes(1), b"garbage"])
924
925
  dic = {cvp.opcode: [cvp]}
925
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
926
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
926
927
  one_node_one_block, wallet_a, dic, num_blocks=4
927
928
  )
928
929
 
@@ -933,12 +934,12 @@ class TestMempoolManager:
933
934
 
934
935
  @pytest.mark.anyio
935
936
  async def test_negative_block_age(
936
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
937
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
937
938
  ) -> None:
938
- full_node_1, server_1, bt = one_node_one_block
939
+ full_node_1, _server_1, _bt = one_node_one_block
939
940
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, [int_to_bytes(-1)])
940
941
  dic = {cvp.opcode: [cvp]}
941
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
942
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
942
943
  one_node_one_block, wallet_a, dic, num_blocks=4
943
944
  )
944
945
 
@@ -949,16 +950,16 @@ class TestMempoolManager:
949
950
 
950
951
  @pytest.mark.anyio
951
952
  async def test_correct_my_id(
952
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
953
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
953
954
  ) -> None:
954
- full_node_1, server_1, bt = one_node_one_block
955
+ full_node_1, _server_1, bt = one_node_one_block
955
956
 
956
957
  _ = await next_block(full_node_1, wallet_a, bt)
957
958
  _ = await next_block(full_node_1, wallet_a, bt)
958
959
  coin = await next_block(full_node_1, wallet_a, bt)
959
960
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_COIN_ID, [coin.name()])
960
961
  dic = {cvp.opcode: [cvp]}
961
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
962
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
962
963
  one_node_one_block, wallet_a, dic, coin=coin
963
964
  )
964
965
 
@@ -969,9 +970,9 @@ class TestMempoolManager:
969
970
 
970
971
  @pytest.mark.anyio
971
972
  async def test_my_id_garbage(
972
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
973
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
973
974
  ) -> None:
974
- full_node_1, server_1, bt = one_node_one_block
975
+ full_node_1, _server_1, bt = one_node_one_block
975
976
 
976
977
  _ = await next_block(full_node_1, wallet_a, bt)
977
978
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -980,7 +981,7 @@ class TestMempoolManager:
980
981
  # but not in mempool mode
981
982
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_COIN_ID, [coin.name(), b"garbage"])
982
983
  dic = {cvp.opcode: [cvp]}
983
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
984
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
984
985
  one_node_one_block, wallet_a, dic, coin=coin
985
986
  )
986
987
 
@@ -991,9 +992,9 @@ class TestMempoolManager:
991
992
 
992
993
  @pytest.mark.anyio
993
994
  async def test_invalid_my_id(
994
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
995
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
995
996
  ) -> None:
996
- full_node_1, server_1, bt = one_node_one_block
997
+ full_node_1, _server_1, bt = one_node_one_block
997
998
 
998
999
  _ = await next_block(full_node_1, wallet_a, bt)
999
1000
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -1001,7 +1002,7 @@ class TestMempoolManager:
1001
1002
  coin_2 = await next_block(full_node_1, wallet_a, bt)
1002
1003
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_COIN_ID, [coin_2.name()])
1003
1004
  dic = {cvp.opcode: [cvp]}
1004
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1005
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1005
1006
  one_node_one_block, wallet_a, dic, coin=coin
1006
1007
  )
1007
1008
 
@@ -1012,12 +1013,12 @@ class TestMempoolManager:
1012
1013
 
1013
1014
  @pytest.mark.anyio
1014
1015
  async def test_my_id_missing_arg(
1015
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1016
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1016
1017
  ) -> None:
1017
- full_node_1, server_1, bt = one_node_one_block
1018
+ full_node_1, _server_1, _bt = one_node_one_block
1018
1019
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_COIN_ID, [])
1019
1020
  dic = {cvp.opcode: [cvp]}
1020
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1021
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1021
1022
 
1022
1023
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1023
1024
  assert err == Err.INVALID_CONDITION
@@ -1026,7 +1027,7 @@ class TestMempoolManager:
1026
1027
 
1027
1028
  @pytest.mark.anyio
1028
1029
  async def test_assert_time_exceeds(
1029
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1030
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1030
1031
  ) -> None:
1031
1032
  full_node_1, _, _ = one_node_one_block
1032
1033
  blockchain_peak = full_node_1.full_node.blockchain.get_peak()
@@ -1045,7 +1046,7 @@ class TestMempoolManager:
1045
1046
 
1046
1047
  @pytest.mark.anyio
1047
1048
  async def test_assert_time_fail(
1048
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1049
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1049
1050
  ) -> None:
1050
1051
  full_node_1, _, _ = one_node_one_block
1051
1052
  blockchain_peak = full_node_1.full_node.blockchain.get_peak()
@@ -1055,7 +1056,7 @@ class TestMempoolManager:
1055
1056
 
1056
1057
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_ABSOLUTE, [int_to_bytes(time_now)])
1057
1058
  dic = {cvp.opcode: [cvp]}
1058
- _, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1059
+ _, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1059
1060
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1060
1061
  assert err == Err.ASSERT_SECONDS_ABSOLUTE_FAILED
1061
1062
  assert sb1 is None
@@ -1063,7 +1064,7 @@ class TestMempoolManager:
1063
1064
 
1064
1065
  @pytest.mark.anyio
1065
1066
  async def test_assert_height_pending(
1066
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1067
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1067
1068
  ) -> None:
1068
1069
  full_node_1, _, _ = one_node_one_block
1069
1070
  blockchain_peak = full_node_1.full_node.blockchain.get_peak()
@@ -1080,14 +1081,14 @@ class TestMempoolManager:
1080
1081
 
1081
1082
  @pytest.mark.anyio
1082
1083
  async def test_assert_time_negative(
1083
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1084
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1084
1085
  ) -> None:
1085
- full_node_1, server_1, bt = one_node_one_block
1086
+ full_node_1, _server_1, _bt = one_node_one_block
1086
1087
  time_now = -1
1087
1088
 
1088
1089
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_ABSOLUTE, [int_to_bytes(time_now)])
1089
1090
  dic = {cvp.opcode: [cvp]}
1090
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1091
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1091
1092
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1092
1093
  assert err is None
1093
1094
  assert sb1 == spend_bundle1
@@ -1095,13 +1096,13 @@ class TestMempoolManager:
1095
1096
 
1096
1097
  @pytest.mark.anyio
1097
1098
  async def test_assert_time_missing_arg(
1098
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1099
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1099
1100
  ) -> None:
1100
- full_node_1, server_1, bt = one_node_one_block
1101
+ full_node_1, _server_1, _bt = one_node_one_block
1101
1102
 
1102
1103
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_ABSOLUTE, [])
1103
1104
  dic = {cvp.opcode: [cvp]}
1104
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1105
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1105
1106
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1106
1107
  assert err == Err.INVALID_CONDITION
1107
1108
  assert sb1 is None
@@ -1109,7 +1110,7 @@ class TestMempoolManager:
1109
1110
 
1110
1111
  @pytest.mark.anyio
1111
1112
  async def test_assert_time_garbage(
1112
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1113
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1113
1114
  ) -> None:
1114
1115
  full_node_1, _, _ = one_node_one_block
1115
1116
  blockchain_peak = full_node_1.full_node.blockchain.get_peak()
@@ -1129,14 +1130,14 @@ class TestMempoolManager:
1129
1130
 
1130
1131
  @pytest.mark.anyio
1131
1132
  async def test_assert_time_relative_exceeds(
1132
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1133
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1133
1134
  ) -> None:
1134
- full_node_1, server_1, bt = one_node_one_block
1135
+ full_node_1, _server_1, _bt = one_node_one_block
1135
1136
  time_relative = 3
1136
1137
 
1137
1138
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_RELATIVE, [int_to_bytes(time_relative)])
1138
1139
  dic = {cvp.opcode: [cvp]}
1139
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1140
+ _blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1140
1141
 
1141
1142
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1142
1143
  assert err == Err.ASSERT_SECONDS_RELATIVE_FAILED
@@ -1157,16 +1158,16 @@ class TestMempoolManager:
1157
1158
 
1158
1159
  @pytest.mark.anyio
1159
1160
  async def test_assert_time_relative_garbage(
1160
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1161
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1161
1162
  ) -> None:
1162
- full_node_1, server_1, bt = one_node_one_block
1163
+ full_node_1, _server_1, _bt = one_node_one_block
1163
1164
  time_relative = 0
1164
1165
 
1165
1166
  # garbage at the end of the arguments is ignored in consensus mode, but
1166
1167
  # not in mempool mode
1167
1168
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_RELATIVE, [int_to_bytes(time_relative), b"garbage"])
1168
1169
  dic = {cvp.opcode: [cvp]}
1169
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1170
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1170
1171
 
1171
1172
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1172
1173
  assert err is Err.INVALID_CONDITION
@@ -1175,13 +1176,13 @@ class TestMempoolManager:
1175
1176
 
1176
1177
  @pytest.mark.anyio
1177
1178
  async def test_assert_time_relative_missing_arg(
1178
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1179
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1179
1180
  ) -> None:
1180
- full_node_1, server_1, bt = one_node_one_block
1181
+ full_node_1, _server_1, _bt = one_node_one_block
1181
1182
 
1182
1183
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_RELATIVE, [])
1183
1184
  dic = {cvp.opcode: [cvp]}
1184
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1185
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1185
1186
 
1186
1187
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1187
1188
  assert err == Err.INVALID_CONDITION
@@ -1190,14 +1191,14 @@ class TestMempoolManager:
1190
1191
 
1191
1192
  @pytest.mark.anyio
1192
1193
  async def test_assert_time_relative_negative(
1193
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1194
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1194
1195
  ) -> None:
1195
- full_node_1, server_1, bt = one_node_one_block
1196
+ full_node_1, _server_1, _bt = one_node_one_block
1196
1197
  time_relative = -3
1197
1198
 
1198
1199
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_SECONDS_RELATIVE, [int_to_bytes(time_relative)])
1199
1200
  dic = {cvp.opcode: [cvp]}
1200
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1201
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1201
1202
 
1202
1203
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1203
1204
  assert err is None
@@ -1207,7 +1208,7 @@ class TestMempoolManager:
1207
1208
  # ensure one spend can assert a coin announcement from another spend
1208
1209
  @pytest.mark.anyio
1209
1210
  async def test_correct_coin_announcement_consumed(
1210
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1211
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1211
1212
  ) -> None:
1212
1213
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1213
1214
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=b"test")
@@ -1221,8 +1222,8 @@ class TestMempoolManager:
1221
1222
  bundle = SpendBundle.aggregate([spend_bundle1, spend_bundle2])
1222
1223
  return bundle
1223
1224
 
1224
- full_node_1, server_1, bt = one_node_one_block
1225
- blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
1225
+ full_node_1, _server_1, _bt = one_node_one_block
1226
+ _blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
1226
1227
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(bundle.name())
1227
1228
 
1228
1229
  assert err is None
@@ -1246,7 +1247,7 @@ class TestMempoolManager:
1246
1247
  announce_garbage: bool,
1247
1248
  expected: Optional[Err],
1248
1249
  expected_included: MempoolInclusionStatus,
1249
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1250
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1250
1251
  wallet_a: WalletTool,
1251
1252
  ) -> None:
1252
1253
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
@@ -1270,8 +1271,8 @@ class TestMempoolManager:
1270
1271
  bundle = SpendBundle.aggregate([spend_bundle1, spend_bundle2])
1271
1272
  return bundle
1272
1273
 
1273
- full_node_1, server_1, bt = one_node_one_block
1274
- blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
1274
+ full_node_1, _server_1, _bt = one_node_one_block
1275
+ _blocks, bundle, status, err = await self.condition_tester2(one_node_one_block, wallet_a, test_fun)
1275
1276
 
1276
1277
  assert err is expected
1277
1278
  assert status == expected_included
@@ -1281,7 +1282,7 @@ class TestMempoolManager:
1281
1282
 
1282
1283
  @pytest.mark.anyio
1283
1284
  async def test_coin_announcement_missing_arg(
1284
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1285
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1285
1286
  ) -> None:
1286
1287
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1287
1288
  # missing arg here
@@ -1303,7 +1304,7 @@ class TestMempoolManager:
1303
1304
 
1304
1305
  @pytest.mark.anyio
1305
1306
  async def test_coin_announcement_missing_arg2(
1306
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1307
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1307
1308
  ) -> None:
1308
1309
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1309
1310
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=b"test")
@@ -1326,7 +1327,7 @@ class TestMempoolManager:
1326
1327
 
1327
1328
  @pytest.mark.anyio
1328
1329
  async def test_coin_announcement_too_big(
1329
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1330
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1330
1331
  ) -> None:
1331
1332
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1332
1333
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=bytes([1] * 10000))
@@ -1362,7 +1363,7 @@ class TestMempoolManager:
1362
1363
  # create announcement
1363
1364
  @pytest.mark.anyio
1364
1365
  async def test_invalid_coin_announcement_rejected(
1365
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1366
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1366
1367
  ) -> None:
1367
1368
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1368
1369
  announce = AssertCoinAnnouncement(asserted_id=coin_2.name(), asserted_msg=b"test")
@@ -1392,7 +1393,7 @@ class TestMempoolManager:
1392
1393
 
1393
1394
  @pytest.mark.anyio
1394
1395
  async def test_invalid_coin_announcement_rejected_two(
1395
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1396
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1396
1397
  ) -> None:
1397
1398
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1398
1399
  announce = AssertCoinAnnouncement(asserted_id=coin_1.name(), asserted_msg=b"test")
@@ -1419,7 +1420,7 @@ class TestMempoolManager:
1419
1420
 
1420
1421
  @pytest.mark.anyio
1421
1422
  async def test_correct_puzzle_announcement(
1422
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1423
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1423
1424
  ) -> None:
1424
1425
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1425
1426
  announce = AssertPuzzleAnnouncement(asserted_ph=coin_2.puzzle_hash, asserted_msg=bytes(0x80))
@@ -1459,7 +1460,7 @@ class TestMempoolManager:
1459
1460
  announce_garbage: bool,
1460
1461
  expected: Optional[Err],
1461
1462
  expected_included: MempoolInclusionStatus,
1462
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1463
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1463
1464
  wallet_a: WalletTool,
1464
1465
  ) -> None:
1465
1466
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
@@ -1494,7 +1495,7 @@ class TestMempoolManager:
1494
1495
 
1495
1496
  @pytest.mark.anyio
1496
1497
  async def test_puzzle_announcement_missing_arg(
1497
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1498
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1498
1499
  ) -> None:
1499
1500
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1500
1501
  # missing arg here
@@ -1521,7 +1522,7 @@ class TestMempoolManager:
1521
1522
 
1522
1523
  @pytest.mark.anyio
1523
1524
  async def test_puzzle_announcement_missing_arg2(
1524
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1525
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1525
1526
  ) -> None:
1526
1527
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1527
1528
  announce = AssertPuzzleAnnouncement(asserted_ph=coin_2.puzzle_hash, asserted_msg=b"test")
@@ -1549,7 +1550,7 @@ class TestMempoolManager:
1549
1550
 
1550
1551
  @pytest.mark.anyio
1551
1552
  async def test_invalid_puzzle_announcement_rejected(
1552
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1553
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1553
1554
  ) -> None:
1554
1555
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1555
1556
  announce = AssertPuzzleAnnouncement(asserted_ph=coin_2.puzzle_hash, asserted_msg=bytes("test", "utf-8"))
@@ -1579,7 +1580,7 @@ class TestMempoolManager:
1579
1580
 
1580
1581
  @pytest.mark.anyio
1581
1582
  async def test_invalid_puzzle_announcement_rejected_two(
1582
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1583
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1583
1584
  ) -> None:
1584
1585
  def test_fun(coin_1: Coin, coin_2: Coin) -> SpendBundle:
1585
1586
  announce = AssertPuzzleAnnouncement(asserted_ph=coin_2.puzzle_hash, asserted_msg=bytes(0x80))
@@ -1609,12 +1610,12 @@ class TestMempoolManager:
1609
1610
 
1610
1611
  @pytest.mark.anyio
1611
1612
  async def test_assert_fee_condition(
1612
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1613
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1613
1614
  ) -> None:
1614
- full_node_1, server_1, bt = one_node_one_block
1615
+ full_node_1, _server_1, _bt = one_node_one_block
1615
1616
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [int_to_bytes(10)])
1616
1617
  dic = {cvp.opcode: [cvp]}
1617
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1618
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1618
1619
  one_node_one_block, wallet_a, dic, fee=10
1619
1620
  )
1620
1621
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
@@ -1625,14 +1626,14 @@ class TestMempoolManager:
1625
1626
 
1626
1627
  @pytest.mark.anyio
1627
1628
  async def test_assert_fee_condition_garbage(
1628
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1629
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1629
1630
  ) -> None:
1630
- full_node_1, server_1, bt = one_node_one_block
1631
+ full_node_1, _server_1, _bt = one_node_one_block
1631
1632
  # garbage at the end of the arguments is ignored in consensus mode, but
1632
1633
  # not in mempool mode
1633
1634
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [int_to_bytes(10), b"garbage"])
1634
1635
  dic = {cvp.opcode: [cvp]}
1635
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1636
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1636
1637
  one_node_one_block, wallet_a, dic, fee=10
1637
1638
  )
1638
1639
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
@@ -1643,12 +1644,12 @@ class TestMempoolManager:
1643
1644
 
1644
1645
  @pytest.mark.anyio
1645
1646
  async def test_assert_fee_condition_missing_arg(
1646
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1647
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1647
1648
  ) -> None:
1648
- full_node_1, server_1, bt = one_node_one_block
1649
+ full_node_1, _server_1, _bt = one_node_one_block
1649
1650
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [])
1650
1651
  dic = {cvp.opcode: [cvp]}
1651
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1652
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1652
1653
  one_node_one_block, wallet_a, dic, fee=10
1653
1654
  )
1654
1655
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
@@ -1659,12 +1660,12 @@ class TestMempoolManager:
1659
1660
 
1660
1661
  @pytest.mark.anyio
1661
1662
  async def test_assert_fee_condition_negative_fee(
1662
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1663
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1663
1664
  ) -> None:
1664
- full_node_1, server_1, bt = one_node_one_block
1665
+ full_node_1, _server_1, bt = one_node_one_block
1665
1666
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [int_to_bytes(-1)])
1666
1667
  dic = {cvp.opcode: [cvp]}
1667
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1668
+ blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1668
1669
  one_node_one_block, wallet_a, dic, fee=10
1669
1670
  )
1670
1671
  assert err == Err.RESERVE_FEE_CONDITION_FAILED
@@ -1679,12 +1680,12 @@ class TestMempoolManager:
1679
1680
 
1680
1681
  @pytest.mark.anyio
1681
1682
  async def test_assert_fee_condition_fee_too_large(
1682
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1683
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1683
1684
  ) -> None:
1684
- full_node_1, server_1, bt = one_node_one_block
1685
+ full_node_1, _server_1, bt = one_node_one_block
1685
1686
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [int_to_bytes(2**64)])
1686
1687
  dic = {cvp.opcode: [cvp]}
1687
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1688
+ blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1688
1689
  one_node_one_block, wallet_a, dic, fee=10
1689
1690
  )
1690
1691
  assert err == Err.RESERVE_FEE_CONDITION_FAILED
@@ -1699,13 +1700,15 @@ class TestMempoolManager:
1699
1700
 
1700
1701
  @pytest.mark.anyio
1701
1702
  async def test_assert_fee_condition_wrong_fee(
1702
- self, one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1703
+ self, one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools], wallet_a: WalletTool
1703
1704
  ) -> None:
1704
- full_node_1, server_1, bt = one_node_one_block
1705
+ full_node_1, _server_1, _bt = one_node_one_block
1705
1706
 
1706
1707
  cvp = ConditionWithArgs(ConditionOpcode.RESERVE_FEE, [int_to_bytes(10)])
1707
1708
  dic = {cvp.opcode: [cvp]}
1708
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic, fee=9)
1709
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1710
+ one_node_one_block, wallet_a, dic, fee=9
1711
+ )
1709
1712
  mempool_bundle = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1710
1713
 
1711
1714
  assert err == Err.RESERVE_FEE_CONDITION_FAILED
@@ -1715,7 +1718,7 @@ class TestMempoolManager:
1715
1718
  @pytest.mark.anyio
1716
1719
  async def test_stealing_fee(
1717
1720
  self,
1718
- two_nodes_one_block: Tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
1721
+ two_nodes_one_block: tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
1719
1722
  wallet_a: WalletTool,
1720
1723
  ) -> None:
1721
1724
  reward_ph = wallet_a.get_new_puzzlehash()
@@ -1732,8 +1735,7 @@ class TestMempoolManager:
1732
1735
 
1733
1736
  peer = await connect_and_get_peer(server_1, server_2, bt.config["self_hostname"])
1734
1737
 
1735
- for block in blocks:
1736
- await full_node_1.full_node.add_block(block)
1738
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
1737
1739
 
1738
1740
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 5)
1739
1741
 
@@ -1776,7 +1778,7 @@ class TestMempoolManager:
1776
1778
  @pytest.mark.anyio
1777
1779
  async def test_double_spend_same_bundle(
1778
1780
  self,
1779
- two_nodes_one_block: Tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
1781
+ two_nodes_one_block: tuple[FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, BlockTools],
1780
1782
  wallet_a: WalletTool,
1781
1783
  ) -> None:
1782
1784
  reward_ph = wallet_a.get_new_puzzlehash()
@@ -1791,8 +1793,7 @@ class TestMempoolManager:
1791
1793
  pool_reward_puzzle_hash=reward_ph,
1792
1794
  )
1793
1795
 
1794
- for block in blocks:
1795
- await full_node_1.full_node.add_block(block)
1796
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
1796
1797
 
1797
1798
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
1798
1799
  # coin = blocks[-1].get_included_reward_coins()[0]
@@ -1825,11 +1826,11 @@ class TestMempoolManager:
1825
1826
  @pytest.mark.anyio
1826
1827
  async def test_agg_sig_condition(
1827
1828
  self,
1828
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1829
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1829
1830
  wallet_a: WalletTool,
1830
1831
  ) -> None:
1831
1832
  reward_ph = wallet_a.get_new_puzzlehash()
1832
- full_node_1, server_1, bt = one_node_one_block
1833
+ full_node_1, _server_1, bt = one_node_one_block
1833
1834
  blocks = await full_node_1.get_all_full_blocks()
1834
1835
  start_height = blocks[-1].height
1835
1836
  blocks = bt.get_consecutive_blocks(
@@ -1840,15 +1841,14 @@ class TestMempoolManager:
1840
1841
  pool_reward_puzzle_hash=reward_ph,
1841
1842
  )
1842
1843
 
1843
- for block in blocks:
1844
- await full_node_1.full_node.add_block(block)
1844
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
1845
1845
 
1846
1846
  await time_out_assert(60, node_height_at_least, True, full_node_1, start_height + 3)
1847
1847
 
1848
1848
  coin = await next_block(full_node_1, wallet_a, bt)
1849
1849
  # coin = blocks[-1].get_included_reward_coins()[0]
1850
1850
  spend_bundle_0 = generate_test_spend_bundle(wallet_a, coin)
1851
- unsigned: List[CoinSpend] = spend_bundle_0.coin_spends
1851
+ unsigned: list[CoinSpend] = spend_bundle_0.coin_spends
1852
1852
 
1853
1853
  assert len(unsigned) == 1
1854
1854
  # coin_spend: CoinSpend = unsigned[0]
@@ -1874,17 +1874,17 @@ class TestMempoolManager:
1874
1874
  @pytest.mark.anyio
1875
1875
  async def test_correct_my_parent(
1876
1876
  self,
1877
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1877
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1878
1878
  wallet_a: WalletTool,
1879
1879
  ) -> None:
1880
- full_node_1, server_1, bt = one_node_one_block
1880
+ full_node_1, _server_1, bt = one_node_one_block
1881
1881
 
1882
1882
  _ = await next_block(full_node_1, wallet_a, bt)
1883
1883
  _ = await next_block(full_node_1, wallet_a, bt)
1884
1884
  coin = await next_block(full_node_1, wallet_a, bt)
1885
1885
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PARENT_ID, [coin.parent_coin_info])
1886
1886
  dic = {cvp.opcode: [cvp]}
1887
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1887
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1888
1888
  one_node_one_block, wallet_a, dic, coin=coin
1889
1889
  )
1890
1890
 
@@ -1897,10 +1897,10 @@ class TestMempoolManager:
1897
1897
  @pytest.mark.anyio
1898
1898
  async def test_my_parent_garbage(
1899
1899
  self,
1900
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1900
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1901
1901
  wallet_a: WalletTool,
1902
1902
  ) -> None:
1903
- full_node_1, server_1, bt = one_node_one_block
1903
+ full_node_1, _server_1, bt = one_node_one_block
1904
1904
 
1905
1905
  _ = await next_block(full_node_1, wallet_a, bt)
1906
1906
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -1909,7 +1909,7 @@ class TestMempoolManager:
1909
1909
  # but not in mempool mode
1910
1910
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PARENT_ID, [coin.parent_coin_info, b"garbage"])
1911
1911
  dic = {cvp.opcode: [cvp]}
1912
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1912
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1913
1913
  one_node_one_block, wallet_a, dic, coin=coin
1914
1914
  )
1915
1915
 
@@ -1922,13 +1922,13 @@ class TestMempoolManager:
1922
1922
  @pytest.mark.anyio
1923
1923
  async def test_my_parent_missing_arg(
1924
1924
  self,
1925
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1925
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1926
1926
  wallet_a: WalletTool,
1927
1927
  ) -> None:
1928
- full_node_1, server_1, bt = one_node_one_block
1928
+ full_node_1, _server_1, _bt = one_node_one_block
1929
1929
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PARENT_ID, [])
1930
1930
  dic = {cvp.opcode: [cvp]}
1931
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1931
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
1932
1932
 
1933
1933
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
1934
1934
 
@@ -1939,10 +1939,10 @@ class TestMempoolManager:
1939
1939
  @pytest.mark.anyio
1940
1940
  async def test_invalid_my_parent(
1941
1941
  self,
1942
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1942
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1943
1943
  wallet_a: WalletTool,
1944
1944
  ) -> None:
1945
- full_node_1, server_1, bt = one_node_one_block
1945
+ full_node_1, _server_1, bt = one_node_one_block
1946
1946
 
1947
1947
  _ = await next_block(full_node_1, wallet_a, bt)
1948
1948
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -1950,7 +1950,7 @@ class TestMempoolManager:
1950
1950
  coin_2 = await next_block(full_node_1, wallet_a, bt)
1951
1951
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PARENT_ID, [coin_2.parent_coin_info])
1952
1952
  dic = {cvp.opcode: [cvp]}
1953
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1953
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1954
1954
  one_node_one_block, wallet_a, dic, coin=coin
1955
1955
  )
1956
1956
 
@@ -1963,17 +1963,17 @@ class TestMempoolManager:
1963
1963
  @pytest.mark.anyio
1964
1964
  async def test_correct_my_puzhash(
1965
1965
  self,
1966
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1966
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1967
1967
  wallet_a: WalletTool,
1968
1968
  ) -> None:
1969
- full_node_1, server_1, bt = one_node_one_block
1969
+ full_node_1, _server_1, bt = one_node_one_block
1970
1970
 
1971
1971
  _ = await next_block(full_node_1, wallet_a, bt)
1972
1972
  _ = await next_block(full_node_1, wallet_a, bt)
1973
1973
  coin = await next_block(full_node_1, wallet_a, bt)
1974
1974
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PUZZLEHASH, [coin.puzzle_hash])
1975
1975
  dic = {cvp.opcode: [cvp]}
1976
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
1976
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
1977
1977
  one_node_one_block, wallet_a, dic, coin=coin
1978
1978
  )
1979
1979
 
@@ -1986,10 +1986,10 @@ class TestMempoolManager:
1986
1986
  @pytest.mark.anyio
1987
1987
  async def test_my_puzhash_garbage(
1988
1988
  self,
1989
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
1989
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
1990
1990
  wallet_a: WalletTool,
1991
1991
  ) -> None:
1992
- full_node_1, server_1, bt = one_node_one_block
1992
+ full_node_1, _server_1, bt = one_node_one_block
1993
1993
 
1994
1994
  _ = await next_block(full_node_1, wallet_a, bt)
1995
1995
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -1997,7 +1997,7 @@ class TestMempoolManager:
1997
1997
  # garbage at the end of the arguments list is allowed but stripped
1998
1998
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PUZZLEHASH, [coin.puzzle_hash, b"garbage"])
1999
1999
  dic = {cvp.opcode: [cvp]}
2000
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
2000
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
2001
2001
  one_node_one_block, wallet_a, dic, coin=coin
2002
2002
  )
2003
2003
 
@@ -2010,13 +2010,13 @@ class TestMempoolManager:
2010
2010
  @pytest.mark.anyio
2011
2011
  async def test_my_puzhash_missing_arg(
2012
2012
  self,
2013
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2013
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2014
2014
  wallet_a: WalletTool,
2015
2015
  ) -> None:
2016
- full_node_1, server_1, bt = one_node_one_block
2016
+ full_node_1, _server_1, _bt = one_node_one_block
2017
2017
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PUZZLEHASH, [])
2018
2018
  dic = {cvp.opcode: [cvp]}
2019
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2019
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2020
2020
 
2021
2021
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
2022
2022
 
@@ -2027,17 +2027,17 @@ class TestMempoolManager:
2027
2027
  @pytest.mark.anyio
2028
2028
  async def test_invalid_my_puzhash(
2029
2029
  self,
2030
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2030
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2031
2031
  wallet_a: WalletTool,
2032
2032
  ) -> None:
2033
- full_node_1, server_1, bt = one_node_one_block
2033
+ full_node_1, _server_1, bt = one_node_one_block
2034
2034
 
2035
2035
  _ = await next_block(full_node_1, wallet_a, bt)
2036
2036
  _ = await next_block(full_node_1, wallet_a, bt)
2037
2037
  coin = await next_block(full_node_1, wallet_a, bt)
2038
2038
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_PUZZLEHASH, [Program.to([]).get_tree_hash()])
2039
2039
  dic = {cvp.opcode: [cvp]}
2040
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
2040
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
2041
2041
  one_node_one_block, wallet_a, dic, coin=coin
2042
2042
  )
2043
2043
 
@@ -2050,17 +2050,17 @@ class TestMempoolManager:
2050
2050
  @pytest.mark.anyio
2051
2051
  async def test_correct_my_amount(
2052
2052
  self,
2053
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2053
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2054
2054
  wallet_a: WalletTool,
2055
2055
  ) -> None:
2056
- full_node_1, server_1, bt = one_node_one_block
2056
+ full_node_1, _server_1, bt = one_node_one_block
2057
2057
 
2058
2058
  _ = await next_block(full_node_1, wallet_a, bt)
2059
2059
  _ = await next_block(full_node_1, wallet_a, bt)
2060
2060
  coin = await next_block(full_node_1, wallet_a, bt)
2061
2061
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_AMOUNT, [int_to_bytes(coin.amount)])
2062
2062
  dic = {cvp.opcode: [cvp]}
2063
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
2063
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
2064
2064
  one_node_one_block, wallet_a, dic, coin=coin
2065
2065
  )
2066
2066
 
@@ -2073,10 +2073,10 @@ class TestMempoolManager:
2073
2073
  @pytest.mark.anyio
2074
2074
  async def test_my_amount_garbage(
2075
2075
  self,
2076
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2076
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2077
2077
  wallet_a: WalletTool,
2078
2078
  ) -> None:
2079
- full_node_1, server_1, bt = one_node_one_block
2079
+ full_node_1, _server_1, bt = one_node_one_block
2080
2080
 
2081
2081
  _ = await next_block(full_node_1, wallet_a, bt)
2082
2082
  _ = await next_block(full_node_1, wallet_a, bt)
@@ -2085,7 +2085,7 @@ class TestMempoolManager:
2085
2085
  # but not in mempool mode
2086
2086
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_AMOUNT, [int_to_bytes(coin.amount), b"garbage"])
2087
2087
  dic = {cvp.opcode: [cvp]}
2088
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(
2088
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(
2089
2089
  one_node_one_block, wallet_a, dic, coin=coin
2090
2090
  )
2091
2091
 
@@ -2098,13 +2098,13 @@ class TestMempoolManager:
2098
2098
  @pytest.mark.anyio
2099
2099
  async def test_my_amount_missing_arg(
2100
2100
  self,
2101
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2101
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2102
2102
  wallet_a: WalletTool,
2103
2103
  ) -> None:
2104
- full_node_1, server_1, bt = one_node_one_block
2104
+ full_node_1, _server_1, _bt = one_node_one_block
2105
2105
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_AMOUNT, [])
2106
2106
  dic = {cvp.opcode: [cvp]}
2107
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2107
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2108
2108
 
2109
2109
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
2110
2110
 
@@ -2115,13 +2115,13 @@ class TestMempoolManager:
2115
2115
  @pytest.mark.anyio
2116
2116
  async def test_invalid_my_amount(
2117
2117
  self,
2118
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2118
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2119
2119
  wallet_a: WalletTool,
2120
2120
  ) -> None:
2121
- full_node_1, server_1, bt = one_node_one_block
2121
+ full_node_1, _server_1, _bt = one_node_one_block
2122
2122
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_AMOUNT, [int_to_bytes(1000)])
2123
2123
  dic = {cvp.opcode: [cvp]}
2124
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2124
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2125
2125
 
2126
2126
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
2127
2127
 
@@ -2132,13 +2132,13 @@ class TestMempoolManager:
2132
2132
  @pytest.mark.anyio
2133
2133
  async def test_negative_my_amount(
2134
2134
  self,
2135
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2135
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2136
2136
  wallet_a: WalletTool,
2137
2137
  ) -> None:
2138
- full_node_1, server_1, bt = one_node_one_block
2138
+ full_node_1, _server_1, _bt = one_node_one_block
2139
2139
  cvp = ConditionWithArgs(ConditionOpcode.ASSERT_MY_AMOUNT, [int_to_bytes(-1)])
2140
2140
  dic = {cvp.opcode: [cvp]}
2141
- blocks, spend_bundle1, peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2141
+ _blocks, spend_bundle1, _peer, status, err = await self.condition_tester(one_node_one_block, wallet_a, dic)
2142
2142
 
2143
2143
  sb1 = full_node_1.full_node.mempool_manager.get_spendbundle(spend_bundle1.name())
2144
2144
 
@@ -2149,7 +2149,7 @@ class TestMempoolManager:
2149
2149
  @pytest.mark.anyio
2150
2150
  async def test_my_amount_too_large(
2151
2151
  self,
2152
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2152
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2153
2153
  wallet_a: WalletTool,
2154
2154
  ) -> None:
2155
2155
  full_node_1, _, _ = one_node_one_block
@@ -2227,7 +2227,7 @@ class TestGeneratorConditions:
2227
2227
  # note how the list of conditions isn't correctly terminated with a
2228
2228
  # NIL atom. This is a failure
2229
2229
  npc_result = generator_condition_tester("(80 50) . 3", height=softfork_height)
2230
- assert npc_result.error in [Err.INVALID_CONDITION.value, Err.GENERATOR_RUNTIME_ERROR.value]
2230
+ assert npc_result.error in {Err.INVALID_CONDITION.value, Err.GENERATOR_RUNTIME_ERROR.value}
2231
2231
 
2232
2232
  @pytest.mark.parametrize(
2233
2233
  "opcode",
@@ -2341,7 +2341,7 @@ class TestGeneratorConditions:
2341
2341
  max_cost=generator_base_cost + 95 * COST_PER_BYTE + ConditionCost.CREATE_COIN.value - 1,
2342
2342
  height=softfork_height,
2343
2343
  )
2344
- assert npc_result.error in [Err.BLOCK_COST_EXCEEDS_MAX.value, Err.INVALID_BLOCK_COST.value]
2344
+ assert npc_result.error in {Err.BLOCK_COST_EXCEEDS_MAX.value, Err.INVALID_BLOCK_COST.value}
2345
2345
 
2346
2346
  @pytest.mark.parametrize(
2347
2347
  "condition",
@@ -2383,11 +2383,11 @@ class TestGeneratorConditions:
2383
2383
  max_cost=generator_base_cost + 117 * COST_PER_BYTE + expected_cost - 1,
2384
2384
  height=softfork_height,
2385
2385
  )
2386
- assert npc_result.error in [
2386
+ assert npc_result.error in {
2387
2387
  Err.GENERATOR_RUNTIME_ERROR.value,
2388
2388
  Err.BLOCK_COST_EXCEEDS_MAX.value,
2389
2389
  Err.INVALID_BLOCK_COST.value,
2390
- ]
2390
+ }
2391
2391
 
2392
2392
  @pytest.mark.parametrize(
2393
2393
  "condition",
@@ -2834,7 +2834,7 @@ class TestMaliciousGenerators:
2834
2834
  @pytest.mark.anyio
2835
2835
  async def test_invalid_coin_spend_coin(
2836
2836
  self,
2837
- one_node_one_block: Tuple[FullNodeSimulator, ChiaServer, BlockTools],
2837
+ one_node_one_block: tuple[FullNodeSimulator, ChiaServer, BlockTools],
2838
2838
  wallet_a: WalletTool,
2839
2839
  ) -> None:
2840
2840
  full_node_1, _, bt = one_node_one_block
@@ -2846,8 +2846,7 @@ class TestMaliciousGenerators:
2846
2846
  pool_reward_puzzle_hash=reward_ph,
2847
2847
  )
2848
2848
 
2849
- for block in blocks:
2850
- await full_node_1.full_node.add_block(block)
2849
+ await add_blocks_in_batches(blocks, full_node_1.full_node)
2851
2850
 
2852
2851
  await time_out_assert(60, node_height_at_least, True, full_node_1, blocks[-1].height)
2853
2852
 
@@ -2900,7 +2899,7 @@ coins = make_test_coins()
2900
2899
  ),
2901
2900
  ],
2902
2901
  )
2903
- def test_items_by_feerate(items: List[MempoolItem], expected: List[Coin]) -> None:
2902
+ def test_items_by_feerate(items: list[MempoolItem], expected: list[Coin]) -> None:
2904
2903
  fee_estimator = create_bitcoin_fee_estimator(uint64(11000000000))
2905
2904
 
2906
2905
  mempool_info = MempoolInfo(
@@ -2953,7 +2952,7 @@ def item_cost(cost: int, fee_rate: float) -> MempoolItem:
2953
2952
  ([75, 15, 9], 10, [10, 75, 15]),
2954
2953
  ],
2955
2954
  )
2956
- def test_full_mempool(items: List[int], add: int, expected: List[int]) -> None:
2955
+ def test_full_mempool(items: list[int], add: int, expected: list[int]) -> None:
2957
2956
  fee_estimator = create_bitcoin_fee_estimator(uint64(11000000000))
2958
2957
 
2959
2958
  mempool_info = MempoolInfo(
@@ -3000,7 +2999,7 @@ def test_full_mempool(items: List[int], add: int, expected: List[int]) -> None:
3000
2999
  ([10, 11, 12, 13, 50], [10, 11, 12, 13], False),
3001
3000
  ],
3002
3001
  )
3003
- def test_limit_expiring_transactions(height: bool, items: List[int], expected: List[int], increase_fee: bool) -> None:
3002
+ def test_limit_expiring_transactions(height: bool, items: list[int], expected: list[int], increase_fee: bool) -> None:
3004
3003
  fee_estimator = create_bitcoin_fee_estimator(uint64(11000000000))
3005
3004
 
3006
3005
  mempool_info = MempoolInfo(
@@ -3079,7 +3078,7 @@ def test_limit_expiring_transactions(height: bool, items: List[int], expected: L
3079
3078
  ),
3080
3079
  ],
3081
3080
  )
3082
- def test_get_items_by_coin_ids(items: List[MempoolItem], coin_ids: List[bytes32], expected: List[MempoolItem]) -> None:
3081
+ def test_get_items_by_coin_ids(items: list[MempoolItem], coin_ids: list[bytes32], expected: list[MempoolItem]) -> None:
3083
3082
  fee_estimator = create_bitcoin_fee_estimator(uint64(11000000000))
3084
3083
  mempool_info = MempoolInfo(
3085
3084
  CLVMCost(uint64(11000000000 * 3)),
@@ -3112,7 +3111,7 @@ async def test_aggregating_on_a_solution_then_a_more_cost_saving_one_appears() -
3112
3111
  sb = spend_bundle_from_conditions(conditions, coin)
3113
3112
  return sb
3114
3113
 
3115
- def agg_and_add_sb_returning_cost_info(mempool: Mempool, spend_bundles: List[SpendBundle]) -> uint64:
3114
+ def agg_and_add_sb_returning_cost_info(mempool: Mempool, spend_bundles: list[SpendBundle]) -> uint64:
3116
3115
  sb = SpendBundle.aggregate(spend_bundles)
3117
3116
  mi = mempool_item_from_spendbundle(sb)
3118
3117
  mempool.add_to_pool(mi)
@@ -3188,7 +3187,6 @@ ENABLE_KECCAK_OPS_OUTSIDE_GUARD = 0x100
3188
3187
 
3189
3188
 
3190
3189
  def test_flags_for_height() -> None:
3191
-
3192
3190
  # the keccak operator is supposed to be enabled at soft-fork 6 height
3193
3191
  flags = get_flags_for_height_and_constants(DEFAULT_CONSTANTS.SOFT_FORK6_HEIGHT, DEFAULT_CONSTANTS)
3194
3192
  print(f"{flags:x}")
@@ -3200,7 +3198,6 @@ def test_flags_for_height() -> None:
3200
3198
 
3201
3199
 
3202
3200
  def test_keccak() -> None:
3203
-
3204
3201
  # the keccak operator is 62. The assemble() function doesn't support it
3205
3202
  # (yet)
3206
3203