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,9 +3,10 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import logging
5
5
  import time
6
+ from collections.abc import Awaitable, Collection
6
7
  from concurrent.futures import Executor, ThreadPoolExecutor
7
8
  from dataclasses import dataclass
8
- from typing import Awaitable, Callable, Collection, Dict, List, Optional, Set, Tuple, TypeVar
9
+ from typing import Callable, Optional, TypeVar
9
10
 
10
11
  from chia_rs import ELIGIBLE_FOR_DEDUP, ELIGIBLE_FOR_FF, BLSCache, supports_fast_forward, validate_clvm_and_signature
11
12
  from chiabip158 import PyBIP158
@@ -33,7 +34,6 @@ from chia.util.db_wrapper import SQLITE_INT_MAX
33
34
  from chia.util.errors import Err, ValidationError
34
35
  from chia.util.inline_executor import InlineExecutor
35
36
  from chia.util.ints import uint32, uint64
36
- from chia.util.setproctitle import getproctitle, setproctitle
37
37
 
38
38
  log = logging.getLogger(__name__)
39
39
 
@@ -51,7 +51,7 @@ class TimelockConditions:
51
51
 
52
52
 
53
53
  def compute_assert_height(
54
- removal_coin_records: Dict[bytes32, CoinRecord],
54
+ removal_coin_records: dict[bytes32, CoinRecord],
55
55
  conds: SpendBundleConditions,
56
56
  ) -> TimelockConditions:
57
57
  """
@@ -102,14 +102,14 @@ def compute_assert_height(
102
102
  class SpendBundleAddInfo:
103
103
  cost: Optional[uint64]
104
104
  status: MempoolInclusionStatus
105
- removals: List[MempoolRemoveInfo]
105
+ removals: list[MempoolRemoveInfo]
106
106
  error: Optional[Err]
107
107
 
108
108
 
109
109
  @dataclass
110
110
  class NewPeakInfo:
111
- items: List[NewPeakItem]
112
- removals: List[MempoolRemoveInfo]
111
+ items: list[NewPeakItem]
112
+ removals: list[MempoolRemoveInfo]
113
113
 
114
114
 
115
115
  @dataclass
@@ -127,8 +127,8 @@ QUOTE_EXECUTION_COST = 20
127
127
  class MempoolManager:
128
128
  pool: Executor
129
129
  constants: ConsensusConstants
130
- seen_bundle_hashes: Dict[bytes32, bytes32]
131
- get_coin_records: Callable[[Collection[bytes32]], Awaitable[List[CoinRecord]]]
130
+ seen_bundle_hashes: dict[bytes32, bytes32]
131
+ get_coin_records: Callable[[Collection[bytes32]], Awaitable[list[CoinRecord]]]
132
132
  nonzero_fee_minimum_fpc: int
133
133
  mempool_max_total_cost: int
134
134
  # a cache of MempoolItems that conflict with existing items in the pool
@@ -144,7 +144,7 @@ class MempoolManager:
144
144
 
145
145
  def __init__(
146
146
  self,
147
- get_coin_records: Callable[[Collection[bytes32]], Awaitable[List[CoinRecord]]],
147
+ get_coin_records: Callable[[Collection[bytes32]], Awaitable[list[CoinRecord]]],
148
148
  consensus_constants: ConsensusConstants,
149
149
  *,
150
150
  single_threaded: bool = False,
@@ -153,7 +153,7 @@ class MempoolManager:
153
153
  self.constants: ConsensusConstants = consensus_constants
154
154
 
155
155
  # Keep track of seen spend_bundles
156
- self.seen_bundle_hashes: Dict[bytes32, bytes32] = {}
156
+ self.seen_bundle_hashes: dict[bytes32, bytes32] = {}
157
157
 
158
158
  self.get_coin_records = get_coin_records
159
159
 
@@ -162,12 +162,11 @@ class MempoolManager:
162
162
  # spends.
163
163
  self.nonzero_fee_minimum_fpc = 5
164
164
 
165
- BLOCK_SIZE_LIMIT_FACTOR = 0.7
166
165
  # We need to deduct the block overhead, which consists of the wrapping
167
166
  # quote opcode's bytes cost as well as its execution cost.
168
167
  BLOCK_OVERHEAD = QUOTE_BYTES * self.constants.COST_PER_BYTE + QUOTE_EXECUTION_COST
169
168
 
170
- self.max_block_clvm_cost = uint64(self.constants.MAX_BLOCK_COST_CLVM * BLOCK_SIZE_LIMIT_FACTOR - BLOCK_OVERHEAD)
169
+ self.max_block_clvm_cost = uint64(self.constants.MAX_BLOCK_COST_CLVM - BLOCK_OVERHEAD)
171
170
  self.max_tx_clvm_cost = (
172
171
  max_tx_clvm_cost if max_tx_clvm_cost is not None else uint64(self.constants.MAX_BLOCK_COST_CLVM // 2)
173
172
  )
@@ -181,11 +180,7 @@ class MempoolManager:
181
180
  if single_threaded:
182
181
  self.pool = InlineExecutor()
183
182
  else:
184
- self.pool = ThreadPoolExecutor(
185
- max_workers=2,
186
- initializer=setproctitle,
187
- initargs=(f"{getproctitle()}_mempool_worker",),
188
- )
183
+ self.pool = ThreadPoolExecutor(max_workers=2)
189
184
 
190
185
  # The mempool will correspond to a certain peak
191
186
  self.peak: Optional[BlockRecordProtocol] = None
@@ -205,7 +200,7 @@ class MempoolManager:
205
200
  last_tb_header_hash: bytes32,
206
201
  get_unspent_lineage_info_for_puzzle_hash: Callable[[bytes32], Awaitable[Optional[UnspentLineageInfo]]],
207
202
  item_inclusion_filter: Optional[Callable[[bytes32], bool]] = None,
208
- ) -> Optional[Tuple[SpendBundle, List[Coin]]]:
203
+ ) -> Optional[tuple[SpendBundle, list[Coin]]]:
209
204
  """
210
205
  Returns aggregated spendbundle that can be used for creating new block,
211
206
  additions and removals in that spend_bundle
@@ -224,7 +219,7 @@ class MempoolManager:
224
219
  )
225
220
 
226
221
  def get_filter(self) -> bytes:
227
- all_transactions: Set[bytes32] = set()
222
+ all_transactions: set[bytes32] = set()
228
223
  byte_array_list = []
229
224
  for key in self.mempool.all_item_ids():
230
225
  if key not in all_transactions:
@@ -252,7 +247,7 @@ class MempoolManager:
252
247
  def add_and_maybe_pop_seen(self, spend_name: bytes32) -> None:
253
248
  self.seen_bundle_hashes[spend_name] = spend_name
254
249
  while len(self.seen_bundle_hashes) > self.seen_cache_size:
255
- first_in = list(self.seen_bundle_hashes.keys())[0]
250
+ first_in = next(iter(self.seen_bundle_hashes.keys()))
256
251
  self.seen_bundle_hashes.pop(first_in)
257
252
 
258
253
  def seen(self, bundle_hash: bytes32) -> bool:
@@ -321,7 +316,7 @@ class MempoolManager:
321
316
  conds: SpendBundleConditions,
322
317
  spend_name: bytes32,
323
318
  first_added_height: uint32,
324
- get_coin_records: Optional[Callable[[Collection[bytes32]], Awaitable[List[CoinRecord]]]] = None,
319
+ get_coin_records: Optional[Callable[[Collection[bytes32]], Awaitable[list[CoinRecord]]]] = None,
325
320
  ) -> SpendBundleAddInfo:
326
321
  """
327
322
  Validates and adds to mempool a new_spend with the given NPCResult, and spend_name, and the current mempool.
@@ -337,7 +332,7 @@ class MempoolManager:
337
332
  Returns:
338
333
  Optional[uint64]: cost of the entire transaction, None iff status is FAILED
339
334
  MempoolInclusionStatus: SUCCESS (should add to pool), FAILED (cannot add), and PENDING (can add later)
340
- List[MempoolRemoveInfo]: conflicting mempool items which were removed, if no Err
335
+ list[MempoolRemoveInfo]: conflicting mempool items which were removed, if no Err
341
336
  Optional[Err]: Err is set iff status is FAILED
342
337
  """
343
338
 
@@ -362,7 +357,7 @@ class MempoolManager:
362
357
  info = self.mempool.add_to_pool(item)
363
358
  if info.error is not None:
364
359
  return SpendBundleAddInfo(item.cost, MempoolInclusionStatus.FAILED, [], info.error)
365
- return SpendBundleAddInfo(item.cost, MempoolInclusionStatus.SUCCESS, info.removals + [conflict], None)
360
+ return SpendBundleAddInfo(item.cost, MempoolInclusionStatus.SUCCESS, [*info.removals, conflict], None)
366
361
  elif err is Err.MEMPOOL_CONFLICT and item is not None:
367
362
  # The transaction has a conflict with another item in the
368
363
  # mempool, put it aside and re-try it later
@@ -383,8 +378,8 @@ class MempoolManager:
383
378
  conds: SpendBundleConditions,
384
379
  spend_name: bytes32,
385
380
  first_added_height: uint32,
386
- get_coin_records: Callable[[Collection[bytes32]], Awaitable[List[CoinRecord]]],
387
- ) -> Tuple[Optional[Err], Optional[MempoolItem], List[bytes32]]:
381
+ get_coin_records: Callable[[Collection[bytes32]], Awaitable[list[CoinRecord]]],
382
+ ) -> tuple[Optional[Err], Optional[MempoolItem], list[bytes32]]:
388
383
  """
389
384
  Validates new_spend with the given NPCResult, and spend_name, and the current mempool. The mempool should
390
385
  be locked during this call (blockchain lock).
@@ -400,7 +395,7 @@ class MempoolManager:
400
395
  Returns:
401
396
  Optional[Err]: Err is set if we cannot add to the mempool, None if we will immediately add to mempool
402
397
  Optional[MempoolItem]: the item to add (to mempool or pending pool)
403
- List[bytes32]: conflicting mempool items to remove, if no Err
398
+ list[bytes32]: conflicting mempool items to remove, if no Err
404
399
  """
405
400
  start_time = time.time()
406
401
  if self.peak is None:
@@ -408,12 +403,12 @@ class MempoolManager:
408
403
 
409
404
  cost = conds.cost
410
405
 
411
- removal_names: Set[bytes32] = set()
412
- additions_dict: Dict[bytes32, Coin] = {}
406
+ removal_names: set[bytes32] = set()
407
+ additions_dict: dict[bytes32, Coin] = {}
413
408
  addition_amount: int = 0
414
409
  # Map of coin ID to eligibility information
415
- eligibility_and_additions: Dict[bytes32, EligibilityAndAdditions] = {}
416
- non_eligible_coin_ids: List[bytes32] = []
410
+ eligibility_and_additions: dict[bytes32, EligibilityAndAdditions] = {}
411
+ non_eligible_coin_ids: list[bytes32] = []
417
412
  for spend in conds.spends:
418
413
  coin_id = bytes32(spend.coin_id)
419
414
  removal_names.add(coin_id)
@@ -422,7 +417,7 @@ class MempoolManager:
422
417
  child_coin = Coin(coin_id, puzzle_hash, uint64(amount))
423
418
  spend_additions.append(child_coin)
424
419
  additions_dict[child_coin.name()] = child_coin
425
- addition_amount = addition_amount + child_coin.amount
420
+ addition_amount += child_coin.amount
426
421
  is_eligible_for_dedup = bool(spend.flags & ELIGIBLE_FOR_DEDUP)
427
422
  is_eligible_for_ff = bool(spend.flags & ELIGIBLE_FOR_FF)
428
423
  eligibility_and_additions[coin_id] = EligibilityAndAdditions(
@@ -430,9 +425,9 @@ class MempoolManager:
430
425
  spend_additions=spend_additions,
431
426
  is_eligible_for_ff=is_eligible_for_ff,
432
427
  )
433
- removal_names_from_coin_spends: Set[bytes32] = set()
434
- fast_forward_coin_ids: Set[bytes32] = set()
435
- bundle_coin_spends: Dict[bytes32, BundleCoinSpend] = {}
428
+ removal_names_from_coin_spends: set[bytes32] = set()
429
+ fast_forward_coin_ids: set[bytes32] = set()
430
+ bundle_coin_spends: dict[bytes32, BundleCoinSpend] = {}
436
431
  for coin_spend in new_spend.coin_spends:
437
432
  coin_id = coin_spend.coin.name()
438
433
  removal_names_from_coin_spends.add(coin_id)
@@ -457,7 +452,7 @@ class MempoolManager:
457
452
  # If you reach here it's probably because your program reveal doesn't match the coin's puzzle hash
458
453
  return Err.INVALID_SPEND_BUNDLE, None, []
459
454
 
460
- removal_record_dict: Dict[bytes32, CoinRecord] = {}
455
+ removal_record_dict: dict[bytes32, CoinRecord] = {}
461
456
  removal_amount: int = 0
462
457
  removal_records = await get_coin_records(removal_names)
463
458
  for record in removal_records:
@@ -485,7 +480,7 @@ class MempoolManager:
485
480
  removal_record_dict[name] = removal_record
486
481
  else:
487
482
  removal_record = removal_record_dict[name]
488
- removal_amount = removal_amount + removal_record.coin.amount
483
+ removal_amount += removal_record.coin.amount
489
484
 
490
485
  fees = uint64(removal_amount - addition_amount)
491
486
 
@@ -580,17 +575,17 @@ class MempoolManager:
580
575
  log.log(
581
576
  logging.DEBUG if duration < 2 else logging.WARNING,
582
577
  f"add_spendbundle {spend_name} took {duration:0.2f} seconds. "
583
- f"Cost: {cost} ({round(100.0 * cost/self.constants.MAX_BLOCK_COST_CLVM, 3)}% of max block cost)",
578
+ f"Cost: {cost} ({round(100.0 * cost / self.constants.MAX_BLOCK_COST_CLVM, 3)}% of max block cost)",
584
579
  )
585
580
 
586
581
  return None, potential, [item.name for item in conflicts]
587
582
 
588
583
  def check_removals(
589
584
  self,
590
- non_eligible_coin_ids: List[bytes32],
591
- removals: Dict[bytes32, CoinRecord],
592
- fast_forward_coin_ids: Set[bytes32],
593
- ) -> Tuple[Optional[Err], List[MempoolItem]]:
585
+ non_eligible_coin_ids: list[bytes32],
586
+ removals: dict[bytes32, CoinRecord],
587
+ fast_forward_coin_ids: set[bytes32],
588
+ ) -> tuple[Optional[Err], list[MempoolItem]]:
594
589
  """
595
590
  This function checks for double spends, unknown spends and conflicting transactions in mempool.
596
591
  Returns Error (if any), the set of existing MempoolItems with conflicting spends (if any).
@@ -636,7 +631,7 @@ class MempoolManager:
636
631
  return item
637
632
 
638
633
  async def new_peak(
639
- self, new_peak: Optional[BlockRecordProtocol], spent_coins: Optional[List[bytes32]]
634
+ self, new_peak: Optional[BlockRecordProtocol], spent_coins: Optional[list[bytes32]]
640
635
  ) -> NewPeakInfo:
641
636
  """
642
637
  Called when a new peak is available, we try to recreate a mempool for the new tip.
@@ -655,10 +650,10 @@ class MempoolManager:
655
650
  return NewPeakInfo([], [])
656
651
  assert new_peak.timestamp is not None
657
652
  self.fee_estimator.new_block_height(new_peak.height)
658
- included_items: List[MempoolItemInfo] = []
653
+ included_items: list[MempoolItemInfo] = []
659
654
 
660
655
  expired = self.mempool.new_tx_block(new_peak.height, new_peak.timestamp)
661
- mempool_item_removals: List[MempoolRemoveInfo] = [expired]
656
+ mempool_item_removals: list[MempoolRemoveInfo] = [expired]
662
657
 
663
658
  use_optimization: bool = self.peak is not None and new_peak.prev_transaction_block_hash == self.peak.header_hash
664
659
  self.peak = new_peak
@@ -669,7 +664,7 @@ class MempoolManager:
669
664
  # when looking up transactions by all coin IDs, we're likely to
670
665
  # find the same transaction multiple times. We put them in a set
671
666
  # to deduplicate
672
- spendbundle_ids_to_remove: Set[bytes32] = set()
667
+ spendbundle_ids_to_remove: set[bytes32] = set()
673
668
  for spend in spent_coins:
674
669
  items = self.mempool.get_items_by_coin_id(spend)
675
670
  for item in items:
@@ -692,9 +687,9 @@ class MempoolManager:
692
687
 
693
688
  # in order to make this a bit quicker, we look-up all the spends in
694
689
  # a single query, rather than one at a time.
695
- coin_records: Dict[bytes32, CoinRecord] = {}
690
+ coin_records: dict[bytes32, CoinRecord] = {}
696
691
 
697
- removals: Set[bytes32] = set()
692
+ removals: set[bytes32] = set()
698
693
  for item in old_pool.all_items():
699
694
  for s in item.spend_bundle.coin_spends:
700
695
  removals.add(s.coin.name())
@@ -703,8 +698,8 @@ class MempoolManager:
703
698
  name = record.coin.name()
704
699
  coin_records[name] = record
705
700
 
706
- async def local_get_coin_records(names: Collection[bytes32]) -> List[CoinRecord]:
707
- ret: List[CoinRecord] = []
701
+ async def local_get_coin_records(names: Collection[bytes32]) -> list[CoinRecord]:
702
+ ret: list[CoinRecord] = []
708
703
  for name in names:
709
704
  r = coin_records.get(name)
710
705
  if r is not None:
@@ -751,8 +746,8 @@ class MempoolManager:
751
746
  self.mempool.fee_estimator.new_block(FeeBlockInfo(new_peak.height, included_items))
752
747
  return NewPeakInfo(txs_added, mempool_item_removals)
753
748
 
754
- def get_items_not_in_filter(self, mempool_filter: PyBIP158, limit: int = 100) -> List[SpendBundle]:
755
- items: List[SpendBundle] = []
749
+ def get_items_not_in_filter(self, mempool_filter: PyBIP158, limit: int = 100) -> list[SpendBundle]:
750
+ items: list[SpendBundle] = []
756
751
 
757
752
  assert limit > 0
758
753
 
@@ -779,8 +774,8 @@ def optional_max(a: Optional[T], b: Optional[T]) -> Optional[T]:
779
774
 
780
775
 
781
776
  def can_replace(
782
- conflicting_items: List[MempoolItem],
783
- removal_names: Set[bytes32],
777
+ conflicting_items: list[MempoolItem],
778
+ removal_names: set[bytes32],
784
779
  new_item: MempoolItem,
785
780
  ) -> bool:
786
781
  """
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass, field
4
- from typing import Dict, Optional
4
+ from typing import Optional
5
5
 
6
6
  from sortedcontainers import SortedDict
7
7
 
@@ -15,7 +15,7 @@ class ConflictTxCache:
15
15
  _cache_max_total_cost: int
16
16
  _cache_max_size: int = 1000
17
17
  _cache_cost: int = field(default=0, init=False)
18
- _txs: Dict[bytes32, MempoolItem] = field(default_factory=dict, init=False)
18
+ _txs: dict[bytes32, MempoolItem] = field(default_factory=dict, init=False)
19
19
 
20
20
  def get(self, bundle_name: bytes32) -> Optional[MempoolItem]:
21
21
  return self._txs.get(bundle_name, None)
@@ -34,11 +34,11 @@ class ConflictTxCache:
34
34
  self._cache_cost += item.cost
35
35
 
36
36
  while self._cache_cost > self._cache_max_total_cost or len(self._txs) > self._cache_max_size:
37
- first_in = list(self._txs.keys())[0]
37
+ first_in = next(iter(self._txs.keys()))
38
38
  self._cache_cost -= self._txs[first_in].cost
39
39
  self._txs.pop(first_in)
40
40
 
41
- def drain(self) -> Dict[bytes32, MempoolItem]:
41
+ def drain(self) -> dict[bytes32, MempoolItem]:
42
42
  ret = self._txs
43
43
  self._txs = {}
44
44
  self._cache_cost = 0
@@ -53,8 +53,8 @@ class PendingTxCache:
53
53
  _cache_max_total_cost: int
54
54
  _cache_max_size: int = 3000
55
55
  _cache_cost: int = field(default=0, init=False)
56
- _txs: Dict[bytes32, MempoolItem] = field(default_factory=dict, init=False)
57
- _by_height: SortedDict[uint32, Dict[bytes32, MempoolItem]] = field(default_factory=SortedDict, init=False)
56
+ _txs: dict[bytes32, MempoolItem] = field(default_factory=dict, init=False)
57
+ _by_height: SortedDict[uint32, dict[bytes32, MempoolItem]] = field(default_factory=SortedDict, init=False)
58
58
 
59
59
  def get(self, bundle_name: bytes32) -> Optional[MempoolItem]:
60
60
  return self._txs.get(bundle_name, None)
@@ -82,15 +82,15 @@ class PendingTxCache:
82
82
  self._txs.pop(to_evict[0])
83
83
  continue
84
84
 
85
- first_in = list(to_evict[1].keys())[0]
85
+ first_in = next(iter(to_evict[1].keys()))
86
86
  removed_item = self._txs.pop(first_in)
87
87
  self._cache_cost -= removed_item.cost
88
88
  to_evict[1].pop(first_in)
89
89
  if to_evict[1] == {}:
90
90
  self._by_height.popitem()
91
91
 
92
- def drain(self, up_to_height: uint32) -> Dict[bytes32, MempoolItem]:
93
- ret: Dict[bytes32, MempoolItem] = {}
92
+ def drain(self, up_to_height: uint32) -> dict[bytes32, MempoolItem]:
93
+ ret: dict[bytes32, MempoolItem] = {}
94
94
 
95
95
  if self._txs == {}:
96
96
  return ret
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import logging
4
4
  from dataclasses import dataclass, field
5
- from typing import Dict, List, Set
6
5
 
7
6
  from chia_rs import Coin
8
7
 
@@ -15,8 +14,8 @@ log = logging.getLogger(__name__)
15
14
 
16
15
  @dataclass(frozen=True)
17
16
  class SubscriptionSet:
18
- _subscriptions_for_peer: Dict[bytes32, Set[bytes32]] = field(default_factory=dict, init=False)
19
- _peers_for_subscription: Dict[bytes32, Set[bytes32]] = field(default_factory=dict, init=False)
17
+ _subscriptions_for_peer: dict[bytes32, set[bytes32]] = field(default_factory=dict, init=False)
18
+ _peers_for_subscription: dict[bytes32, set[bytes32]] = field(default_factory=dict, init=False)
20
19
 
21
20
  def add_subscription(self, peer_id: bytes32, item: bytes32) -> bool:
22
21
  peers = self._peers_for_subscription.setdefault(item, set())
@@ -61,10 +60,10 @@ class SubscriptionSet:
61
60
  if len(self._peers_for_subscription[item]) == 0:
62
61
  self._peers_for_subscription.pop(item)
63
62
 
64
- def subscriptions(self, peer_id: bytes32) -> Set[bytes32]:
63
+ def subscriptions(self, peer_id: bytes32) -> set[bytes32]:
65
64
  return self._subscriptions_for_peer.get(peer_id, set())
66
65
 
67
- def peers(self, item: bytes32) -> Set[bytes32]:
66
+ def peers(self, item: bytes32) -> set[bytes32]:
68
67
  return self._peers_for_subscription.get(item, set())
69
68
 
70
69
  def total_count(self) -> int:
@@ -87,15 +86,15 @@ class PeerSubscriptions:
87
86
  coin_subscriptions = self._coin_subscriptions.count_subscriptions(peer_id)
88
87
  return puzzle_subscriptions + coin_subscriptions
89
88
 
90
- def add_puzzle_subscriptions(self, peer_id: bytes32, puzzle_hashes: List[bytes32], max_items: int) -> Set[bytes32]:
89
+ def add_puzzle_subscriptions(self, peer_id: bytes32, puzzle_hashes: list[bytes32], max_items: int) -> set[bytes32]:
91
90
  """
92
91
  Adds subscriptions until max_items is reached. Filters out duplicates and returns all additions.
93
92
  """
94
93
 
95
94
  subscription_count = self.peer_subscription_count(peer_id)
96
- added: Set[bytes32] = set()
95
+ added: set[bytes32] = set()
97
96
 
98
- def limit_reached() -> Set[bytes32]:
97
+ def limit_reached() -> set[bytes32]:
99
98
  log.info(
100
99
  "Peer %s attempted to exceed the subscription limit while adding puzzle subscriptions.",
101
100
  peer_id,
@@ -121,15 +120,15 @@ class PeerSubscriptions:
121
120
 
122
121
  return added
123
122
 
124
- def add_coin_subscriptions(self, peer_id: bytes32, coin_ids: List[bytes32], max_items: int) -> Set[bytes32]:
123
+ def add_coin_subscriptions(self, peer_id: bytes32, coin_ids: list[bytes32], max_items: int) -> set[bytes32]:
125
124
  """
126
125
  Adds subscriptions until max_items is reached. Filters out duplicates and returns all additions.
127
126
  """
128
127
 
129
128
  subscription_count = self.peer_subscription_count(peer_id)
130
- added: Set[bytes32] = set()
129
+ added: set[bytes32] = set()
131
130
 
132
- def limit_reached() -> Set[bytes32]:
131
+ def limit_reached() -> set[bytes32]:
133
132
  log.info(
134
133
  "Peer %s attempted to exceed the subscription limit while adding coin subscriptions.",
135
134
  peer_id,
@@ -155,12 +154,12 @@ class PeerSubscriptions:
155
154
 
156
155
  return added
157
156
 
158
- def remove_puzzle_subscriptions(self, peer_id: bytes32, puzzle_hashes: List[bytes32]) -> Set[bytes32]:
157
+ def remove_puzzle_subscriptions(self, peer_id: bytes32, puzzle_hashes: list[bytes32]) -> set[bytes32]:
159
158
  """
160
159
  Removes subscriptions. Filters out duplicates and returns all removals.
161
160
  """
162
161
 
163
- removed: Set[bytes32] = set()
162
+ removed: set[bytes32] = set()
164
163
 
165
164
  for puzzle_hash in puzzle_hashes:
166
165
  if not self._puzzle_subscriptions.remove_subscription(peer_id, puzzle_hash):
@@ -170,12 +169,12 @@ class PeerSubscriptions:
170
169
 
171
170
  return removed
172
171
 
173
- def remove_coin_subscriptions(self, peer_id: bytes32, coin_ids: List[bytes32]) -> Set[bytes32]:
172
+ def remove_coin_subscriptions(self, peer_id: bytes32, coin_ids: list[bytes32]) -> set[bytes32]:
174
173
  """
175
174
  Removes subscriptions. Filters out duplicates and returns all removals.
176
175
  """
177
176
 
178
- removed: Set[bytes32] = set()
177
+ removed: set[bytes32] = set()
179
178
 
180
179
  for coin_id in coin_ids:
181
180
  if not self._coin_subscriptions.remove_subscription(peer_id, coin_id):
@@ -195,16 +194,16 @@ class PeerSubscriptions:
195
194
  self._puzzle_subscriptions.remove_peer(peer_id)
196
195
  self._coin_subscriptions.remove_peer(peer_id)
197
196
 
198
- def coin_subscriptions(self, peer_id: bytes32) -> Set[bytes32]:
197
+ def coin_subscriptions(self, peer_id: bytes32) -> set[bytes32]:
199
198
  return self._coin_subscriptions.subscriptions(peer_id)
200
199
 
201
- def puzzle_subscriptions(self, peer_id: bytes32) -> Set[bytes32]:
200
+ def puzzle_subscriptions(self, peer_id: bytes32) -> set[bytes32]:
202
201
  return self._puzzle_subscriptions.subscriptions(peer_id)
203
202
 
204
- def peers_for_coin_id(self, coin_id: bytes32) -> Set[bytes32]:
203
+ def peers_for_coin_id(self, coin_id: bytes32) -> set[bytes32]:
205
204
  return self._coin_subscriptions.peers(coin_id)
206
205
 
207
- def peers_for_puzzle_hash(self, puzzle_hash: bytes32) -> Set[bytes32]:
206
+ def peers_for_puzzle_hash(self, puzzle_hash: bytes32) -> set[bytes32]:
208
207
  return self._puzzle_subscriptions.peers(puzzle_hash)
209
208
 
210
209
  def coin_subscription_count(self) -> int:
@@ -215,16 +214,16 @@ class PeerSubscriptions:
215
214
 
216
215
 
217
216
  def peers_for_spend_bundle(
218
- peer_subscriptions: PeerSubscriptions, conds: SpendBundleConditions, hints_for_removals: Set[bytes32]
219
- ) -> Set[bytes32]:
217
+ peer_subscriptions: PeerSubscriptions, conds: SpendBundleConditions, hints_for_removals: set[bytes32]
218
+ ) -> set[bytes32]:
220
219
  """
221
220
  Returns a list of peer ids that are subscribed to any of the created or
222
221
  spent coins, puzzle hashes, or hints in the spend bundle. To avoid repeated
223
222
  lookups, `hints_for_removals` should be a set of all puzzle hashes that are being removed.
224
223
  """
225
224
 
226
- coin_ids: Set[bytes32] = set()
227
- puzzle_hashes: Set[bytes32] = hints_for_removals.copy()
225
+ coin_ids: set[bytes32] = set()
226
+ puzzle_hashes: set[bytes32] = hints_for_removals.copy()
228
227
 
229
228
  for spend in conds.spends:
230
229
  coin_ids.add(bytes32(spend.coin_id))
@@ -237,7 +236,7 @@ def peers_for_spend_bundle(
237
236
  if memo is not None and len(memo) == 32:
238
237
  puzzle_hashes.add(bytes32(memo))
239
238
 
240
- peers: Set[bytes32] = set()
239
+ peers: set[bytes32] = set()
241
240
 
242
241
  for coin_id in coin_ids:
243
242
  peers |= peer_subscriptions.peers_for_coin_id(coin_id)
@@ -3,9 +3,10 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import collections
5
5
  import logging
6
+ from collections import OrderedDict
6
7
  from collections import OrderedDict as orderedDict
7
8
  from dataclasses import dataclass, field
8
- from typing import Dict, List, Optional, OrderedDict, Set
9
+ from typing import Optional
9
10
 
10
11
  import typing_extensions
11
12
 
@@ -29,14 +30,14 @@ class SyncStore:
29
30
  sync_mode: bool = False
30
31
  long_sync: bool = False
31
32
  # Header hash : peer node id
32
- peak_to_peer: OrderedDict[bytes32, Set[bytes32]] = field(default_factory=orderedDict)
33
+ peak_to_peer: OrderedDict[bytes32, set[bytes32]] = field(default_factory=orderedDict)
33
34
  # peer node id : Peak
34
- peer_to_peak: Dict[bytes32, Peak] = field(default_factory=dict)
35
+ peer_to_peak: dict[bytes32, Peak] = field(default_factory=dict)
35
36
  # Peak we are syncing towards
36
37
  target_peak: Optional[Peak] = None
37
38
  peers_changed: asyncio.Event = field(default_factory=asyncio.Event)
38
39
  # Set of nodes which we are batch syncing from
39
- batch_syncing: Set[bytes32] = field(default_factory=set)
40
+ batch_syncing: set[bytes32] = field(default_factory=set)
40
41
  # Set of nodes which we are backtrack syncing from, and how many threads
41
42
  _backtrack_syncing: collections.defaultdict[bytes32, int] = field(
42
43
  default_factory=lambda: collections.defaultdict(int),
@@ -79,19 +80,19 @@ class SyncStore:
79
80
  if new_peak:
80
81
  self.peer_to_peak[peer_id] = Peak(header_hash, height, weight)
81
82
 
82
- def get_peers_that_have_peak(self, header_hashes: List[bytes32]) -> Set[bytes32]:
83
+ def get_peers_that_have_peak(self, header_hashes: list[bytes32]) -> set[bytes32]:
83
84
  """
84
85
  Returns: peer ids of peers that have at least one of the header hashes.
85
86
  """
86
87
 
87
- node_ids: Set[bytes32] = set()
88
+ node_ids: set[bytes32] = set()
88
89
  for header_hash in header_hashes:
89
90
  if header_hash in self.peak_to_peer:
90
91
  for node_id in self.peak_to_peer[header_hash]:
91
92
  node_ids.add(node_id)
92
93
  return node_ids
93
94
 
94
- def get_peak_of_each_peer(self) -> Dict[bytes32, Peak]:
95
+ def get_peak_of_each_peer(self) -> dict[bytes32, Peak]:
95
96
  """
96
97
  Returns: dictionary of peer id to peak information.
97
98
  """
@@ -4,7 +4,7 @@ import asyncio
4
4
  import logging
5
5
  from dataclasses import dataclass
6
6
  from queue import SimpleQueue
7
- from typing import Dict, List, Optional
7
+ from typing import Optional
8
8
 
9
9
  from chia.types.blockchain_format.sized_bytes import bytes32
10
10
  from chia.types.transaction_queue_entry import TransactionQueueEntry
@@ -25,8 +25,8 @@ class TransactionQueue:
25
25
 
26
26
  _list_cursor: int # this is which index
27
27
  _queue_length: asyncio.Semaphore
28
- _index_to_peer_map: List[bytes32]
29
- _queue_dict: Dict[bytes32, SimpleQueue[TransactionQueueEntry]]
28
+ _index_to_peer_map: list[bytes32]
29
+ _queue_dict: dict[bytes32, SimpleQueue[TransactionQueueEntry]]
30
30
  _high_priority_queue: SimpleQueue[TransactionQueueEntry]
31
31
  peer_size_limit: int
32
32
  log: logging.Logger
File without changes