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
@@ -10,13 +10,14 @@ import ssl
10
10
  import sys
11
11
  import tempfile
12
12
  import time
13
+ from collections.abc import Sequence
13
14
  from dataclasses import dataclass, replace
14
15
  from pathlib import Path
15
16
  from random import Random
16
- from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
17
+ from typing import Any, Callable, Optional
17
18
 
18
19
  import anyio
19
- from chia_rs import ALLOW_BACKREFS, MEMPOOL_MODE, AugSchemeMPL, G1Element, G2Element, PrivateKey, solution_generator
20
+ from chia_rs import MEMPOOL_MODE, AugSchemeMPL, G1Element, G2Element, PrivateKey, solution_generator
20
21
 
21
22
  from chia.consensus.block_creation import create_unfinished_block, unfinished_block_to_full_block
22
23
  from chia.consensus.block_record import BlockRecord
@@ -147,8 +148,8 @@ test_constants = DEFAULT_CONSTANTS.replace(
147
148
  )
148
149
 
149
150
 
150
- def compute_additions_unchecked(sb: SpendBundle) -> List[Coin]:
151
- ret: List[Coin] = []
151
+ def compute_additions_unchecked(sb: SpendBundle) -> list[Coin]:
152
+ ret: list[Coin] = []
152
153
  for cs in sb.coin_spends:
153
154
  parent_id = cs.coin.name()
154
155
  _, r = cs.puzzle_reveal.run_with_cost(INFINITE_COST, cs.solution)
@@ -163,14 +164,14 @@ def compute_additions_unchecked(sb: SpendBundle) -> List[Coin]:
163
164
  return ret
164
165
 
165
166
 
166
- def make_spend_bundle(coins: List[Coin], wallet: WalletTool, rng: Random) -> Tuple[SpendBundle, List[Coin]]:
167
+ def make_spend_bundle(coins: list[Coin], wallet: WalletTool, rng: Random) -> tuple[SpendBundle, list[Coin]]:
167
168
  """
168
169
  makes a new spend bundle (block generator) spending some of the coins in the
169
170
  list of coins. The list will be updated to have spent coins removed and new
170
171
  coins appended.
171
172
  """
172
- new_coins: List[Coin] = []
173
- spend_bundles: List[SpendBundle] = []
173
+ new_coins: list[Coin] = []
174
+ spend_bundles: list[SpendBundle] = []
174
175
  to_spend = rng.sample(coins, min(5, len(coins)))
175
176
  receiver = wallet.get_new_puzzlehash()
176
177
  for c in to_spend:
@@ -190,21 +191,21 @@ class BlockTools:
190
191
  """
191
192
 
192
193
  _block_cache_header: bytes32
193
- _block_cache_height_to_hash: Dict[uint32, bytes32]
194
+ _block_cache_height_to_hash: dict[uint32, bytes32]
194
195
  _block_cache_difficulty: uint64
195
- _block_cache: Dict[bytes32, BlockRecord]
196
+ _block_cache: dict[bytes32, BlockRecord]
196
197
 
197
198
  def __init__(
198
199
  self,
199
200
  constants: ConsensusConstants = test_constants,
200
201
  root_path: Optional[Path] = None,
201
202
  keychain: Optional[Keychain] = None,
202
- config_overrides: Optional[Dict[str, Any]] = None,
203
+ config_overrides: Optional[dict[str, Any]] = None,
203
204
  automated_testing: bool = True,
204
205
  plot_dir: str = "test-plots",
205
206
  log: logging.Logger = logging.getLogger(__name__),
206
207
  ) -> None:
207
- self._block_cache_header = bytes32([0] * 32)
208
+ self._block_cache_header = bytes32.zeros
208
209
 
209
210
  self._tempdir = None
210
211
  if root_path is None:
@@ -214,7 +215,7 @@ class BlockTools:
214
215
  self.root_path = root_path
215
216
  self.log = log
216
217
  self.local_keychain = keychain
217
- self.local_sk_cache: Dict[bytes32, Tuple[PrivateKey, Any]] = {}
218
+ self.local_sk_cache: dict[bytes32, tuple[PrivateKey, Any]] = {}
218
219
  self.automated_testing = automated_testing
219
220
  self.plot_dir_name = plot_dir
220
221
 
@@ -270,7 +271,7 @@ class BlockTools:
270
271
  self.temp_dir: Path = get_plot_tmp_dir(self.plot_dir_name, self.automated_testing)
271
272
  self.plot_dir.mkdir(parents=True, exist_ok=True)
272
273
  self.temp_dir.mkdir(parents=True, exist_ok=True)
273
- self.expected_plots: Dict[bytes32, Path] = {}
274
+ self.expected_plots: dict[bytes32, Path] = {}
274
275
  self.created_plots: int = 0
275
276
  self.total_result = PlotRefreshResult()
276
277
 
@@ -342,12 +343,12 @@ class BlockTools:
342
343
  self.farmer_ph = reward_ph
343
344
  self.pool_ph = reward_ph
344
345
  if self.automated_testing:
345
- self.all_sks: List[PrivateKey] = [sk for sk, _ in await keychain_proxy.get_all_private_keys()]
346
+ self.all_sks: list[PrivateKey] = [sk for sk, _ in await keychain_proxy.get_all_private_keys()]
346
347
  else:
347
348
  self.all_sks = [self.farmer_master_sk] # we only want to include plots under the same fingerprint
348
- self.pool_pubkeys: List[G1Element] = [master_sk_to_pool_sk(sk).get_g1() for sk in self.all_sks]
349
+ self.pool_pubkeys: list[G1Element] = [master_sk_to_pool_sk(sk).get_g1() for sk in self.all_sks]
349
350
 
350
- self.farmer_pubkeys: List[G1Element] = [master_sk_to_farmer_sk(sk).get_g1() for sk in self.all_sks]
351
+ self.farmer_pubkeys: list[G1Element] = [master_sk_to_farmer_sk(sk).get_g1() for sk in self.all_sks]
351
352
  if len(self.pool_pubkeys) == 0 or len(self.farmer_pubkeys) == 0:
352
353
  raise RuntimeError("Keys not generated. Run `chia keys generate`")
353
354
 
@@ -356,7 +357,7 @@ class BlockTools:
356
357
  if keychain_proxy is not None:
357
358
  await keychain_proxy.close() # close the keychain proxy
358
359
 
359
- def change_config(self, new_config: Dict[str, Any]) -> None:
360
+ def change_config(self, new_config: dict[str, Any]) -> None:
360
361
  self._config = new_config
361
362
  overrides = self._config["network_overrides"]["constants"][self._config["selected_network"]]
362
363
  updated_constants = replace_str_to_bytes(self.constants, **overrides)
@@ -462,11 +463,11 @@ class BlockTools:
462
463
 
463
464
  if len(created):
464
465
  assert len(existed) == 0
465
- plot_id_new, path_new = list(created.items())[0]
466
+ plot_id_new, path_new = next(iter(created.items()))
466
467
 
467
468
  if len(existed):
468
469
  assert len(created) == 0
469
- plot_id_new, path_new = list(existed.items())[0]
470
+ plot_id_new, path_new = next(iter(existed.items()))
470
471
  new_plot = False
471
472
  assert plot_id_new is not None
472
473
  assert path_new is not None
@@ -505,7 +506,7 @@ class BlockTools:
505
506
  await self.refresh_plots()
506
507
 
507
508
  @property
508
- def config(self) -> Dict[str, Any]:
509
+ def config(self) -> dict[str, Any]:
509
510
  return copy.deepcopy(self._config)
510
511
 
511
512
  def get_daemon_ssl_context(self) -> ssl.SSLContext:
@@ -567,7 +568,7 @@ class BlockTools:
567
568
  def get_consecutive_blocks(
568
569
  self,
569
570
  num_blocks: int,
570
- block_list_input: Optional[List[FullBlock]] = None,
571
+ block_list_input: Optional[list[FullBlock]] = None,
571
572
  *,
572
573
  farmer_reward_puzzle_hash: Optional[bytes32] = None,
573
574
  pool_reward_puzzle_hash: Optional[bytes32] = None,
@@ -583,21 +584,21 @@ class BlockTools:
583
584
  normalized_to_identity_cc_sp: bool = False,
584
585
  normalized_to_identity_cc_ip: bool = False,
585
586
  current_time: bool = False,
586
- block_refs: List[uint32] = [],
587
+ block_refs: list[uint32] = [],
587
588
  genesis_timestamp: Optional[uint64] = None,
588
589
  force_plot_id: Optional[bytes32] = None,
589
590
  dummy_block_references: bool = False,
590
591
  include_transactions: bool = False,
591
592
  skip_overflow: bool = False,
592
593
  min_signage_point: int = -1,
593
- ) -> List[FullBlock]:
594
+ ) -> list[FullBlock]:
594
595
  assert num_blocks > 0
595
596
  if block_list_input is not None:
596
597
  block_list = block_list_input.copy()
597
598
  else:
598
599
  block_list = []
599
600
 
600
- tx_block_heights: List[uint32] = []
601
+ tx_block_heights: list[uint32] = []
601
602
  if dummy_block_references:
602
603
  # block references can only point to transaction blocks, so we need
603
604
  # to record which ones are
@@ -610,8 +611,8 @@ class BlockTools:
610
611
  if time_per_block is None:
611
612
  time_per_block = float(constants.SUB_SLOT_TIME_TARGET) / float(constants.SLOT_BLOCKS_TARGET)
612
613
 
613
- available_coins: List[Coin] = []
614
- pending_rewards: List[Coin] = []
614
+ available_coins: list[Coin] = []
615
+ pending_rewards: list[Coin] = []
615
616
  wallet: Optional[WalletTool] = None
616
617
  rng: Optional[Random] = None
617
618
  if include_transactions:
@@ -658,7 +659,7 @@ class BlockTools:
658
659
  if num_blocks == 0:
659
660
  return block_list
660
661
 
661
- blocks: Dict[bytes32, BlockRecord]
662
+ blocks: dict[bytes32, BlockRecord]
662
663
  if block_list[-1].header_hash == self._block_cache_header:
663
664
  height_to_hash = self._block_cache_height_to_hash
664
665
  difficulty = self._block_cache_difficulty
@@ -681,8 +682,8 @@ class BlockTools:
681
682
  curr = blocks[curr.prev_hash]
682
683
  blocks_added_this_sub_slot += 1
683
684
 
684
- finished_sub_slots_at_sp: List[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to signage point
685
- finished_sub_slots_at_ip: List[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to infusion point
685
+ finished_sub_slots_at_sp: list[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to signage point
686
+ finished_sub_slots_at_ip: list[EndOfSubSlotBundle] = [] # Sub-slots since last block, up to infusion point
686
687
  sub_slot_iters: uint64 = latest_block.sub_slot_iters # The number of iterations in one sub-slot
687
688
  same_slot_as_last = True # Only applies to first slot, to prevent old blocks from being added
688
689
  sub_slot_start_total_iters: uint128 = latest_block.ip_sub_slot_total_iters(constants)
@@ -741,7 +742,7 @@ class BlockTools:
741
742
  assert signage_point.cc_vdf is not None
742
743
  cc_sp_output_hash = signage_point.cc_vdf.output.get_hash()
743
744
 
744
- qualified_proofs: List[Tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
745
+ qualified_proofs: list[tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
745
746
  constants,
746
747
  slot_cc_challenge,
747
748
  cc_sp_output_hash,
@@ -961,7 +962,7 @@ class BlockTools:
961
962
  new_sub_slot_iters: Optional[uint64] = sub_epoch_summary.new_sub_slot_iters
962
963
  new_difficulty: Optional[uint64] = sub_epoch_summary.new_difficulty
963
964
 
964
- self.log.info(f"Sub epoch summary: {sub_epoch_summary} for block {latest_block.height+1}")
965
+ self.log.info(f"Sub epoch summary: {sub_epoch_summary} for block {latest_block.height + 1}")
965
966
  else: # the previous block is not the last block of the sub-epoch or epoch
966
967
  pending_ses = False
967
968
  ses_hash = None
@@ -1044,7 +1045,7 @@ class BlockTools:
1044
1045
  sub_slots_finished += 1
1045
1046
  self.log.info(
1046
1047
  f"Sub slot finished. blocks included: {blocks_added_this_sub_slot} blocks_per_slot: "
1047
- f"{(len(block_list) - initial_block_list_len)/sub_slots_finished}"
1048
+ f"{(len(block_list) - initial_block_list_len) / sub_slots_finished}"
1048
1049
  f"Sub Epoch Summary Included: {sub_epoch_summary is not None} "
1049
1050
  )
1050
1051
  blocks_added_this_sub_slot = 0 # Sub slot ended, overflows are in next sub slot
@@ -1236,7 +1237,7 @@ class BlockTools:
1236
1237
  if timestamp is None:
1237
1238
  timestamp = uint64(int(time.time()))
1238
1239
 
1239
- finished_sub_slots: List[EndOfSubSlotBundle] = []
1240
+ finished_sub_slots: list[EndOfSubSlotBundle] = []
1240
1241
  unfinished_block: Optional[UnfinishedBlock] = None
1241
1242
  ip_iters: uint64 = uint64(0)
1242
1243
  sub_slot_total_iters: uint128 = uint128(0)
@@ -1262,7 +1263,7 @@ class BlockTools:
1262
1263
  cc_sp_output_hash = signage_point.cc_vdf.output.get_hash()
1263
1264
  # If did not reach the target slots to skip, don't make any proofs for this sub-slot
1264
1265
  # we're creating the genesis block, its height is always 0
1265
- qualified_proofs: List[Tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
1266
+ qualified_proofs: list[tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
1266
1267
  constants,
1267
1268
  cc_challenge,
1268
1269
  cc_sp_output_hash,
@@ -1420,8 +1421,8 @@ class BlockTools:
1420
1421
  sub_slot_iters: uint64,
1421
1422
  height: uint32,
1422
1423
  force_plot_id: Optional[bytes32] = None,
1423
- ) -> List[Tuple[uint64, ProofOfSpace]]:
1424
- found_proofs: List[Tuple[uint64, ProofOfSpace]] = []
1424
+ ) -> list[tuple[uint64, ProofOfSpace]]:
1425
+ found_proofs: list[tuple[uint64, ProofOfSpace]] = []
1425
1426
  rng = random.Random()
1426
1427
  rng.seed(seed)
1427
1428
  for plot_info in self.plot_manager.plots.values():
@@ -1481,7 +1482,7 @@ def get_signage_point(
1481
1482
  latest_block: Optional[BlockRecord],
1482
1483
  sub_slot_start_total_iters: uint128,
1483
1484
  signage_point_index: uint8,
1484
- finished_sub_slots: List[EndOfSubSlotBundle],
1485
+ finished_sub_slots: list[EndOfSubSlotBundle],
1485
1486
  sub_slot_iters: uint64,
1486
1487
  normalized_to_identity_cc_sp: bool = False,
1487
1488
  ) -> SignagePoint:
@@ -1536,9 +1537,9 @@ def get_signage_point(
1536
1537
 
1537
1538
  def finish_block(
1538
1539
  constants: ConsensusConstants,
1539
- blocks: Dict[bytes32, BlockRecord],
1540
- height_to_hash: Dict[uint32, bytes32],
1541
- finished_sub_slots: List[EndOfSubSlotBundle],
1540
+ blocks: dict[bytes32, BlockRecord],
1541
+ height_to_hash: dict[uint32, bytes32],
1542
+ finished_sub_slots: list[EndOfSubSlotBundle],
1542
1543
  sub_slot_start_total_iters: uint128,
1543
1544
  signage_point_index: uint8,
1544
1545
  unfinished_block: UnfinishedBlock,
@@ -1550,7 +1551,7 @@ def finish_block(
1550
1551
  sub_slot_iters: uint64,
1551
1552
  difficulty: uint64,
1552
1553
  normalized_to_identity_cc_ip: bool = False,
1553
- ) -> Tuple[FullBlock, BlockRecord]:
1554
+ ) -> tuple[FullBlock, BlockRecord]:
1554
1555
  is_overflow = is_overflow_block(constants, signage_point_index)
1555
1556
  cc_vdf_challenge = slot_cc_challenge
1556
1557
  if len(finished_sub_slots) == 0:
@@ -1627,10 +1628,10 @@ def finish_block(
1627
1628
 
1628
1629
  def get_challenges(
1629
1630
  constants: ConsensusConstants,
1630
- blocks: Dict[bytes32, BlockRecord],
1631
- finished_sub_slots: List[EndOfSubSlotBundle],
1631
+ blocks: dict[bytes32, BlockRecord],
1632
+ finished_sub_slots: list[EndOfSubSlotBundle],
1632
1633
  prev_header_hash: Optional[bytes32],
1633
- ) -> Tuple[bytes32, bytes32]:
1634
+ ) -> tuple[bytes32, bytes32]:
1634
1635
  if len(finished_sub_slots) == 0:
1635
1636
  if prev_header_hash is None:
1636
1637
  return constants.GENESIS_CHALLENGE, constants.GENESIS_CHALLENGE
@@ -1670,12 +1671,12 @@ def get_plot_tmp_dir(plot_dir_name: str = "test-plots", automated_testing: bool
1670
1671
 
1671
1672
 
1672
1673
  def load_block_list(
1673
- block_list: List[FullBlock], constants: ConsensusConstants
1674
- ) -> Tuple[Dict[uint32, bytes32], uint64, Dict[bytes32, BlockRecord]]:
1674
+ block_list: list[FullBlock], constants: ConsensusConstants
1675
+ ) -> tuple[dict[uint32, bytes32], uint64, dict[bytes32, BlockRecord]]:
1675
1676
  difficulty = uint64(constants.DIFFICULTY_STARTING)
1676
1677
  sub_slot_iters = uint64(constants.SUB_SLOT_ITERS_STARTING)
1677
- height_to_hash: Dict[uint32, bytes32] = {}
1678
- blocks: Dict[bytes32, BlockRecord] = {}
1678
+ height_to_hash: dict[uint32, bytes32] = {}
1679
+ blocks: dict[bytes32, BlockRecord] = {}
1679
1680
  for full_block in block_list:
1680
1681
  if full_block.height != 0:
1681
1682
  if len(full_block.finished_sub_slots) > 0:
@@ -1716,12 +1717,12 @@ def load_block_list(
1716
1717
  def get_icc(
1717
1718
  constants: ConsensusConstants,
1718
1719
  vdf_end_total_iters: uint128,
1719
- finished_sub_slots: List[EndOfSubSlotBundle],
1720
+ finished_sub_slots: list[EndOfSubSlotBundle],
1720
1721
  latest_block: BlockRecord,
1721
- blocks: Dict[bytes32, BlockRecord],
1722
+ blocks: dict[bytes32, BlockRecord],
1722
1723
  sub_slot_start_total_iters: uint128,
1723
1724
  deficit: uint8,
1724
- ) -> Tuple[Optional[VDFInfo], Optional[VDFProof]]:
1725
+ ) -> tuple[Optional[VDFInfo], Optional[VDFProof]]:
1725
1726
  if len(finished_sub_slots) == 0:
1726
1727
  prev_deficit = latest_block.deficit
1727
1728
  else:
@@ -1772,7 +1773,7 @@ def get_icc(
1772
1773
 
1773
1774
  def get_full_block_and_block_record(
1774
1775
  constants: ConsensusConstants,
1775
- blocks: Dict[bytes32, BlockRecord],
1776
+ blocks: dict[bytes32, BlockRecord],
1776
1777
  sub_slot_start_total_iters: uint128,
1777
1778
  signage_point_index: uint8,
1778
1779
  proof_of_space: ProofOfSpace,
@@ -1785,25 +1786,25 @@ def get_full_block_and_block_record(
1785
1786
  time_per_block: float,
1786
1787
  block_generator: Optional[BlockGenerator],
1787
1788
  aggregate_signature: G2Element,
1788
- additions: Optional[List[Coin]],
1789
- removals: Optional[List[Coin]],
1790
- height_to_hash: Dict[uint32, bytes32],
1789
+ additions: Optional[list[Coin]],
1790
+ removals: Optional[list[Coin]],
1791
+ height_to_hash: dict[uint32, bytes32],
1791
1792
  difficulty: uint64,
1792
1793
  required_iters: uint64,
1793
1794
  sub_slot_iters: uint64,
1794
1795
  get_plot_signature: Callable[[bytes32, G1Element], G2Element],
1795
1796
  get_pool_signature: Callable[[PoolTarget, Optional[G1Element]], Optional[G2Element]],
1796
- finished_sub_slots: List[EndOfSubSlotBundle],
1797
+ finished_sub_slots: list[EndOfSubSlotBundle],
1797
1798
  signage_point: SignagePoint,
1798
1799
  prev_block: BlockRecord,
1799
1800
  seed: bytes = b"",
1800
1801
  *,
1801
- block_refs: List[uint32] = [],
1802
+ block_refs: list[uint32] = [],
1802
1803
  overflow_cc_challenge: Optional[bytes32] = None,
1803
1804
  overflow_rc_challenge: Optional[bytes32] = None,
1804
1805
  normalized_to_identity_cc_ip: bool = False,
1805
1806
  current_time: bool = False,
1806
- ) -> Tuple[FullBlock, BlockRecord, float]:
1807
+ ) -> tuple[FullBlock, BlockRecord, float]:
1807
1808
  # we're simulating time between blocks here. The more VDF iterations the
1808
1809
  # blocks advances, the longer it should have taken (and vice versa). This
1809
1810
  # formula is meant to converge at 1024 iters per the specified
@@ -1870,7 +1871,7 @@ def get_full_block_and_block_record(
1870
1871
 
1871
1872
  # these are the costs of unknown conditions, as defined chia_rs here:
1872
1873
  # https://github.com/Chia-Network/chia_rs/pull/181
1873
- def compute_cost_table() -> List[int]:
1874
+ def compute_cost_table() -> list[int]:
1874
1875
  A = 17
1875
1876
  B = 16
1876
1877
  s = []
@@ -1907,7 +1908,7 @@ def conditions_cost(conds: Program) -> uint64:
1907
1908
  elif condition == ConditionOpcode.SOFTFORK.value:
1908
1909
  arg = cond.rest().first().as_int()
1909
1910
  condition_cost += arg * 10000
1910
- elif condition in [
1911
+ elif condition in {
1911
1912
  ConditionOpcode.AGG_SIG_UNSAFE,
1912
1913
  ConditionOpcode.AGG_SIG_ME,
1913
1914
  ConditionOpcode.AGG_SIG_PARENT,
@@ -1916,7 +1917,7 @@ def conditions_cost(conds: Program) -> uint64:
1916
1917
  ConditionOpcode.AGG_SIG_PUZZLE_AMOUNT,
1917
1918
  ConditionOpcode.AGG_SIG_PARENT_AMOUNT,
1918
1919
  ConditionOpcode.AGG_SIG_PARENT_PUZZLE,
1919
- ]:
1920
+ }:
1920
1921
  condition_cost += ConditionCost.AGG_SIG.value
1921
1922
  return uint64(condition_cost)
1922
1923
 
@@ -1946,7 +1947,7 @@ def compute_cost_test(generator: BlockGenerator, constants: ConsensusConstants,
1946
1947
 
1947
1948
  if height >= constants.HARD_FORK_HEIGHT:
1948
1949
  blocks = generator.generator_refs
1949
- cost, result = generator.program._run(INFINITE_COST, MEMPOOL_MODE | ALLOW_BACKREFS, [DESERIALIZE_MOD, blocks])
1950
+ cost, result = generator.program._run(INFINITE_COST, MEMPOOL_MODE, [DESERIALIZE_MOD, blocks])
1950
1951
  clvm_cost += cost
1951
1952
 
1952
1953
  for spend in result.first().as_iter():
@@ -1997,7 +1998,7 @@ async def create_block_tools_async(
1997
1998
  constants: ConsensusConstants = test_constants,
1998
1999
  root_path: Optional[Path] = None,
1999
2000
  keychain: Optional[Keychain] = None,
2000
- config_overrides: Optional[Dict[str, Any]] = None,
2001
+ config_overrides: Optional[dict[str, Any]] = None,
2001
2002
  num_og_plots: int = 15,
2002
2003
  num_pool_plots: int = 5,
2003
2004
  num_non_keychain_plots: int = 3,
@@ -2020,7 +2021,7 @@ def create_block_tools(
2020
2021
  constants: ConsensusConstants = test_constants,
2021
2022
  root_path: Optional[Path] = None,
2022
2023
  keychain: Optional[Keychain] = None,
2023
- config_overrides: Optional[Dict[str, Any]] = None,
2024
+ config_overrides: Optional[dict[str, Any]] = None,
2024
2025
  ) -> BlockTools:
2025
2026
  global create_block_tools_count
2026
2027
  create_block_tools_count += 1