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,8 +3,9 @@ from __future__ import annotations
3
3
  import contextlib
4
4
  import os
5
5
  import pickle
6
+ from collections.abc import AsyncIterator
6
7
  from pathlib import Path
7
- from typing import AsyncIterator, List, Optional, Tuple
8
+ from typing import Optional
8
9
 
9
10
  from chia.consensus.blockchain import Blockchain
10
11
  from chia.consensus.constants import ConsensusConstants
@@ -19,12 +20,12 @@ from chia.util.default_root import DEFAULT_ROOT_PATH
19
20
  @contextlib.asynccontextmanager
20
21
  async def create_blockchain(
21
22
  constants: ConsensusConstants, db_version: int
22
- ) -> AsyncIterator[Tuple[Blockchain, DBWrapper2]]:
23
+ ) -> AsyncIterator[tuple[Blockchain, DBWrapper2]]:
23
24
  db_uri = generate_in_memory_db_uri()
24
25
  async with DBWrapper2.managed(database=db_uri, uri=True, reader_count=1, db_version=db_version) as wrapper:
25
26
  coin_store = await CoinStore.create(wrapper)
26
27
  store = await BlockStore.create(wrapper)
27
- bc1 = await Blockchain.create(coin_store, store, constants, Path("."), 2, single_threaded=True)
28
+ bc1 = await Blockchain.create(coin_store, store, constants, Path("."), 2, single_threaded=True, log_coins=True)
28
29
  try:
29
30
  assert bc1.get_peak() is None
30
31
  yield bc1, wrapper
@@ -43,11 +44,11 @@ def persistent_blocks(
43
44
  normalized_to_identity_icc_eos: bool = False,
44
45
  normalized_to_identity_cc_sp: bool = False,
45
46
  normalized_to_identity_cc_ip: bool = False,
46
- block_list_input: Optional[List[FullBlock]] = None,
47
+ block_list_input: Optional[list[FullBlock]] = None,
47
48
  time_per_block: Optional[float] = None,
48
49
  dummy_block_references: bool = False,
49
50
  include_transactions: bool = False,
50
- ) -> List[FullBlock]:
51
+ ) -> list[FullBlock]:
51
52
  # try loading from disc, if not create new blocks.db file
52
53
  # TODO hash fixtures.py and blocktool.py, add to path, delete if the files changed
53
54
  if block_list_input is None:
@@ -65,8 +66,8 @@ def persistent_blocks(
65
66
  print(f"File found at: {file_path}")
66
67
  try:
67
68
  bytes_list = file_path.read_bytes()
68
- block_bytes_list: List[bytes] = pickle.loads(bytes_list)
69
- blocks: List[FullBlock] = []
69
+ block_bytes_list: list[bytes] = pickle.loads(bytes_list)
70
+ blocks: list[FullBlock] = []
70
71
  for block_bytes in block_bytes_list:
71
72
  blocks.append(FullBlock.from_bytes_unchecked(block_bytes))
72
73
  if len(blocks) == num_of_blocks + len(block_list_input):
@@ -101,7 +102,7 @@ def new_test_db(
101
102
  seed: bytes,
102
103
  empty_sub_slots: int,
103
104
  bt: BlockTools,
104
- block_list_input: List[FullBlock],
105
+ block_list_input: list[FullBlock],
105
106
  time_per_block: Optional[float],
106
107
  *,
107
108
  normalized_to_identity_cc_eos: bool = False, # CC_EOS,
@@ -110,9 +111,9 @@ def new_test_db(
110
111
  normalized_to_identity_cc_ip: bool = False, # CC_IP
111
112
  dummy_block_references: bool = False,
112
113
  include_transactions: bool = False,
113
- ) -> List[FullBlock]:
114
+ ) -> list[FullBlock]:
114
115
  print(f"create {path} with {num_of_blocks} blocks with ")
115
- blocks: List[FullBlock] = bt.get_consecutive_blocks(
116
+ blocks: list[FullBlock] = bt.get_consecutive_blocks(
116
117
  num_of_blocks,
117
118
  block_list_input=block_list_input,
118
119
  time_per_block=time_per_block,
@@ -125,7 +126,7 @@ def new_test_db(
125
126
  dummy_block_references=dummy_block_references,
126
127
  include_transactions=include_transactions,
127
128
  )
128
- block_bytes_list: List[bytes] = []
129
+ block_bytes_list: list[bytes] = []
129
130
  for block in blocks:
130
131
  block_bytes_list.append(bytes(block))
131
132
  bytes_fn = pickle.dumps(block_bytes_list)
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
- from typing import TYPE_CHECKING, ClassVar, Dict, List, Optional, Set, cast
4
+ from typing import TYPE_CHECKING, ClassVar, Optional, cast
5
5
 
6
6
  from chia.consensus.block_record import BlockRecord
7
7
  from chia.types.blockchain_format.sized_bytes import bytes32
@@ -21,10 +21,10 @@ class BlockchainMock:
21
21
 
22
22
  def __init__(
23
23
  self,
24
- blocks: Dict[bytes32, BlockRecord],
25
- headers: Optional[Dict[bytes32, HeaderBlock]] = None,
26
- height_to_hash: Optional[Dict[uint32, bytes32]] = None,
27
- sub_epoch_summaries: Optional[Dict[uint32, SubEpochSummary]] = None,
24
+ blocks: dict[bytes32, BlockRecord],
25
+ headers: Optional[dict[bytes32, HeaderBlock]] = None,
26
+ height_to_hash: Optional[dict[uint32, bytes32]] = None,
27
+ sub_epoch_summaries: Optional[dict[uint32, SubEpochSummary]] = None,
28
28
  ):
29
29
  if sub_epoch_summaries is None:
30
30
  sub_epoch_summaries = {}
@@ -36,7 +36,7 @@ class BlockchainMock:
36
36
  self._headers = headers
37
37
  self._height_to_hash = height_to_hash
38
38
  self._sub_epoch_summaries = sub_epoch_summaries
39
- self._sub_epoch_segments: Dict[bytes32, SubEpochSegments] = {}
39
+ self._sub_epoch_segments: dict[bytes32, SubEpochSegments] = {}
40
40
  self.log = logging.getLogger(__name__)
41
41
 
42
42
  def get_peak(self) -> Optional[BlockRecord]:
@@ -56,7 +56,7 @@ class BlockchainMock:
56
56
 
57
57
  return self.block_record(header_hash)
58
58
 
59
- def get_ses_heights(self) -> List[uint32]:
59
+ def get_ses_heights(self) -> list[uint32]:
60
60
  return sorted(self._sub_epoch_summaries.keys())
61
61
 
62
62
  def get_ses(self, height: uint32) -> SubEpochSummary:
@@ -78,11 +78,11 @@ class BlockchainMock:
78
78
  async def warmup(self, fork_point: uint32) -> None:
79
79
  return
80
80
 
81
- async def get_block_records_in_range(self, start: int, stop: int) -> Dict[bytes32, BlockRecord]:
81
+ async def get_block_records_in_range(self, start: int, stop: int) -> dict[bytes32, BlockRecord]:
82
82
  return self._block_records
83
83
 
84
- async def get_block_records_at(self, heights: List[uint32]) -> List[BlockRecord]:
85
- block_records: List[BlockRecord] = []
84
+ async def get_block_records_at(self, heights: list[uint32]) -> list[BlockRecord]:
85
+ block_records: list[BlockRecord] = []
86
86
  for height in heights:
87
87
  block_records.append(self.height_to_block_record(height))
88
88
  return block_records
@@ -93,7 +93,7 @@ class BlockchainMock:
93
93
  async def get_block_record_from_db(self, header_hash: bytes32) -> Optional[BlockRecord]:
94
94
  return self._block_records[header_hash]
95
95
 
96
- async def prev_block_hash(self, header_hashes: List[bytes32]) -> List[bytes32]:
96
+ async def prev_block_hash(self, header_hashes: list[bytes32]) -> list[bytes32]:
97
97
  ret = []
98
98
  for h in header_hashes:
99
99
  ret.append(self._block_records[h].prev_hash)
@@ -107,18 +107,18 @@ class BlockchainMock:
107
107
 
108
108
  async def get_header_blocks_in_range(
109
109
  self, start: int, stop: int, tx_filter: bool = True
110
- ) -> Dict[bytes32, HeaderBlock]:
110
+ ) -> dict[bytes32, HeaderBlock]:
111
111
  return self._headers
112
112
 
113
113
  async def persist_sub_epoch_challenge_segments(
114
- self, sub_epoch_summary_hash: bytes32, segments: List[SubEpochChallengeSegment]
114
+ self, sub_epoch_summary_hash: bytes32, segments: list[SubEpochChallengeSegment]
115
115
  ) -> None:
116
116
  self._sub_epoch_segments[sub_epoch_summary_hash] = SubEpochSegments(segments)
117
117
 
118
118
  async def get_sub_epoch_challenge_segments(
119
119
  self,
120
120
  sub_epoch_summary_hash: bytes32,
121
- ) -> Optional[List[SubEpochChallengeSegment]]:
121
+ ) -> Optional[list[SubEpochChallengeSegment]]:
122
122
  segments = self._sub_epoch_segments.get(sub_epoch_summary_hash)
123
123
  if segments is None:
124
124
  return None
@@ -127,6 +127,6 @@ class BlockchainMock:
127
127
  def seen_compact_proofs(self, vdf_info: VDFInfo, height: uint32) -> bool:
128
128
  return False
129
129
 
130
- async def lookup_block_generators(self, header_hash: bytes32, generator_refs: Set[uint32]) -> Dict[uint32, bytes]:
130
+ async def lookup_block_generators(self, header_hash: bytes32, generator_refs: set[uint32]) -> dict[uint32, bytes]:
131
131
  # not implemented
132
132
  assert False # pragma: no cover
@@ -1,8 +1,9 @@
1
+ # ruff: noqa: F405
1
2
  from __future__ import annotations
2
3
 
3
4
  import os
4
5
  import subprocess
5
- import sysconfig
6
+ import sys
6
7
  from pathlib import Path
7
8
  from typing import Any, Callable
8
9
 
@@ -183,19 +184,19 @@ def get_protocol_bytes() -> bytes:
183
184
 
184
185
 
185
186
  def build_protocol_test() -> str:
186
- result = """# this file is generated by build_network_protocol_files.py
187
+ result = """# ruff: noqa: F405
188
+ # this file is generated by build_network_protocol_files.py
187
189
 
188
190
  from __future__ import annotations
189
191
 
190
192
  from pathlib import Path
191
- from typing import Tuple
192
193
 
193
194
  from chia._tests.util.build_network_protocol_files import get_network_protocol_filename
194
195
  from chia._tests.util.network_protocol_data import * # noqa: F403
195
196
  from chia._tests.util.protocol_messages_json import * # noqa: F403
196
197
 
197
198
 
198
- def parse_blob(input_bytes: bytes) -> Tuple[bytes, bytes]:
199
+ def parse_blob(input_bytes: bytes) -> tuple[bytes, bytes]:
199
200
  size_bytes = input_bytes[:4]
200
201
  input_bytes = input_bytes[4:]
201
202
  size = int.from_bytes(size_bytes, "big")
@@ -233,17 +234,18 @@ def test_protocol_bytes() -> None:
233
234
 
234
235
 
235
236
  def get_protocol_json() -> str:
236
- result = """# this file is generated by build_network_protocol_files.py
237
+ result = """# ruff: noqa: E501
238
+ # this file is generated by build_network_protocol_files.py
237
239
  from __future__ import annotations
238
240
 
239
- from typing import Any, Dict
241
+ from typing import Any
240
242
  """
241
243
  counter = 0
242
244
 
243
245
  def visitor(obj: Any, name: str) -> None:
244
246
  nonlocal result
245
247
  nonlocal counter
246
- result += f"\n{name}_json: Dict[str, Any] = {obj.to_json_dict()}\n"
248
+ result += f"\n{name}_json: dict[str, Any] = {obj.to_json_dict()}\n"
247
249
  counter += 1
248
250
 
249
251
  visit_all_messages(visitor)
@@ -252,7 +254,8 @@ from typing import Any, Dict
252
254
 
253
255
 
254
256
  def build_json_test() -> str:
255
- result = """# this file is generated by build_network_protocol_files.py
257
+ result = """# ruff: noqa: F405
258
+ # this file is generated by build_network_protocol_files.py
256
259
 
257
260
  from __future__ import annotations
258
261
 
@@ -285,14 +288,11 @@ def main() -> None:
285
288
  "test_network_protocol_json.py": build_json_test,
286
289
  }
287
290
 
288
- scripts_path = Path(sysconfig.get_path("scripts"))
289
-
290
291
  for name, function in name_to_function.items():
291
292
  path = tests_dir.joinpath(name)
292
293
  path.write_text(function())
293
- # black seems to have trouble when run as a module so not using `python -m black`
294
294
  subprocess.run(
295
- [scripts_path.joinpath("black"), os.fspath(path.relative_to(tests_dir))],
295
+ [sys.executable, "-m", "ruff", "format", os.fspath(path.relative_to(tests_dir))],
296
296
  check=True,
297
297
  cwd=tests_dir,
298
298
  )
@@ -1,9 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import tempfile
4
+ from collections.abc import AsyncIterator
4
5
  from contextlib import asynccontextmanager
5
6
  from pathlib import Path
6
- from typing import AsyncIterator, Optional, Type
7
+ from typing import Optional
7
8
 
8
9
  import aiosqlite
9
10
 
@@ -14,7 +15,7 @@ from chia.util.db_wrapper import DBWrapper2, generate_in_memory_db_uri
14
15
  async def DBConnection(
15
16
  db_version: int,
16
17
  foreign_keys: Optional[bool] = None,
17
- row_factory: Optional[Type[aiosqlite.Row]] = None,
18
+ row_factory: Optional[type[aiosqlite.Row]] = None,
18
19
  ) -> AsyncIterator[DBWrapper2]:
19
20
  db_uri = generate_in_memory_db_uri()
20
21
  async with DBWrapper2.managed(
@@ -5,15 +5,17 @@ import logging
5
5
  import shutil
6
6
  import tempfile
7
7
  import time
8
+ from collections.abc import Iterator
8
9
  from contextlib import contextmanager
9
10
  from pathlib import Path
10
- from typing import Callable, Iterator, List, Optional, cast
11
+ from typing import Callable, Optional, cast
11
12
 
12
13
  import aiosqlite
13
14
  import zstd
14
15
 
15
16
  from chia._tests.util.constants import test_constants as TEST_CONSTANTS
16
17
  from chia.cmds.init_funcs import chia_init
18
+ from chia.consensus.block_body_validation import ForkInfo
17
19
  from chia.consensus.constants import replace_str_to_bytes
18
20
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
19
21
  from chia.consensus.difficulty_adjustment import get_next_sub_slot_iters_and_difficulty
@@ -25,6 +27,7 @@ from chia.simulator.block_tools import make_unfinished_block
25
27
  from chia.types.blockchain_format.sized_bytes import bytes32
26
28
  from chia.types.full_block import FullBlock
27
29
  from chia.types.peer_info import PeerInfo
30
+ from chia.types.validation_state import ValidationState
28
31
  from chia.util.config import load_config
29
32
  from chia.util.ints import uint16
30
33
 
@@ -57,13 +60,13 @@ def enable_profiler(profile: bool, counter: int) -> Iterator[None]:
57
60
 
58
61
  class FakeServer:
59
62
  async def send_to_all(
60
- self, messages: List[Message], node_type: NodeType, exclude: Optional[bytes32] = None
63
+ self, messages: list[Message], node_type: NodeType, exclude: Optional[bytes32] = None
61
64
  ) -> None:
62
65
  pass
63
66
 
64
67
  async def send_to_all_if(
65
68
  self,
66
- messages: List[Message],
69
+ messages: list[Message],
67
70
  node_type: NodeType,
68
71
  predicate: Callable[[WSChiaConnection], bool],
69
72
  exclude: Optional[bytes32] = None,
@@ -78,7 +81,7 @@ class FakeServer:
78
81
 
79
82
  def get_connections(
80
83
  self, node_type: Optional[NodeType] = None, *, outbound: Optional[bool] = False
81
- ) -> List[WSChiaConnection]:
84
+ ) -> list[WSChiaConnection]:
82
85
  return []
83
86
 
84
87
  def is_duplicate_or_self_connection(self, target_node: PeerInfo) -> bool:
@@ -206,8 +209,13 @@ async def run_sync_test(
206
209
  ssi, diff = get_next_sub_slot_iters_and_difficulty(
207
210
  full_node.constants, True, block_record, full_node.blockchain
208
211
  )
209
- success, summary, _, _, _, _ = await full_node.add_block_batch(
210
- block_batch, peer_info, None, current_ssi=ssi, current_difficulty=diff
212
+ fork_height = block_batch[0].height - 1
213
+ header_hash = block_batch[0].prev_header_hash
214
+ success, summary = await full_node.add_block_batch(
215
+ block_batch,
216
+ peer_info,
217
+ ForkInfo(fork_height, fork_height, header_hash),
218
+ ValidationState(ssi, diff, None),
211
219
  )
212
220
  end_height = block_batch[-1].height
213
221
  full_node.blockchain.clean_block_record(end_height - full_node.constants.BLOCKS_CACHE_SIZE)
@@ -43,9 +43,6 @@ def gen_ssl(suffix: str = "") -> None:
43
43
  private_ca_key: Optional[bytes] = None
44
44
  capture_cert_and_key = True
45
45
 
46
- print("from typing import Dict, Tuple")
47
- print()
48
-
49
46
  make_ca_cert(Path("SSL_TEST_PRIVATE_CA_CRT"), Path("SSL_TEST_PRIVATE_CA_KEY"))
50
47
 
51
48
  capture_cert_and_key = False
@@ -86,17 +83,19 @@ def gen_ssl(suffix: str = "") -> None:
86
83
  ca_crt = chia_ca_crt if cert_type == "public" else private_ca_crt
87
84
  ca_key = chia_ca_key if cert_type == "public" else private_ca_key
88
85
 
86
+ assert ca_crt is not None
87
+ assert ca_key is not None
89
88
  generate_ca_signed_cert(ca_crt, ca_key, Path(crt), Path(key))
90
89
 
91
90
  patch.undo()
92
91
 
93
92
  append_str = "" if suffix == "" else f"_{suffix}"
94
93
  print(
95
- f"SSL_TEST_PRIVATE_CA_CERT_AND_KEY{append_str}: Tuple[bytes, bytes] = "
94
+ f"SSL_TEST_PRIVATE_CA_CERT_AND_KEY{append_str}: tuple[bytes, bytes] = "
96
95
  "(SSL_TEST_PRIVATE_CA_CRT, SSL_TEST_PRIVATE_CA_KEY)"
97
96
  )
98
97
  print()
99
- print(f"SSL_TEST_NODE_CERTS_AND_KEYS{append_str}: Dict[str, Dict[str, Dict[str, bytes]]] = {{")
98
+ print(f"SSL_TEST_NODE_CERTS_AND_KEYS{append_str}: dict[str, dict[str, dict[str, bytes]]] = {{")
100
99
  for node_name, cert_type_dict in node_certs_and_keys.items():
101
100
  print(f' "{node_name}": {{')
102
101
  for cert_type, cert_dict in cert_type_dict.items():
@@ -1,10 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List, Tuple
4
-
3
+ from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
5
4
  from chia.consensus.constants import ConsensusConstants
6
5
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
7
- from chia.full_node.mempool_check_conditions import get_name_puzzle_conditions
8
6
  from chia.types.blockchain_format.coin import Coin
9
7
  from chia.types.blockchain_format.sized_bytes import bytes32
10
8
  from chia.types.full_block import FullBlock
@@ -19,10 +17,10 @@ def run_and_get_removals_and_additions(
19
17
  *,
20
18
  height: uint32,
21
19
  constants: ConsensusConstants = DEFAULT_CONSTANTS,
22
- mempool_mode=False,
23
- ) -> Tuple[List[bytes32], List[Coin]]:
24
- removals: List[bytes32] = []
25
- additions: List[Coin] = []
20
+ mempool_mode: bool = False,
21
+ ) -> tuple[list[bytes32], list[Coin]]:
22
+ removals: list[bytes32] = []
23
+ additions: list[Coin] = []
26
24
 
27
25
  assert len(block.transactions_generator_ref_list) == 0
28
26
  if not block.is_transaction_block():
@@ -0,0 +1,52 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+
5
+ from chia_rs import (
6
+ DONT_VALIDATE_SIGNATURE,
7
+ MEMPOOL_MODE,
8
+ G2Element,
9
+ get_flags_for_height_and_constants,
10
+ run_block_generator,
11
+ run_block_generator2,
12
+ )
13
+
14
+ from chia.consensus.constants import ConsensusConstants
15
+ from chia.consensus.cost_calculator import NPCResult
16
+ from chia.types.generator_types import BlockGenerator
17
+ from chia.util.errors import Err
18
+ from chia.util.ints import uint16, uint32
19
+
20
+ log = logging.getLogger(__name__)
21
+
22
+
23
+ def get_name_puzzle_conditions(
24
+ generator: BlockGenerator,
25
+ max_cost: int,
26
+ *,
27
+ mempool_mode: bool,
28
+ height: uint32,
29
+ constants: ConsensusConstants,
30
+ ) -> NPCResult:
31
+ flags = get_flags_for_height_and_constants(height, constants) | DONT_VALIDATE_SIGNATURE
32
+
33
+ if mempool_mode:
34
+ flags |= MEMPOOL_MODE
35
+
36
+ if height >= constants.HARD_FORK_HEIGHT:
37
+ run_block = run_block_generator2
38
+ else:
39
+ run_block = run_block_generator
40
+
41
+ try:
42
+ block_args = generator.generator_refs
43
+ err, result = run_block(bytes(generator.program), block_args, max_cost, flags, G2Element(), None, constants)
44
+ assert (err is None) != (result is None)
45
+ if err is not None:
46
+ return NPCResult(uint16(err), None)
47
+ else:
48
+ assert result is not None
49
+ return NPCResult(None, result)
50
+ except BaseException:
51
+ log.exception("get_name_puzzle_condition failed")
52
+ return NPCResult(uint16(Err.GENERATOR_RUNTIME_ERROR.value), None)
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass, field
4
- from typing import Dict, List
5
4
 
6
5
  from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
7
6
 
@@ -13,9 +12,9 @@ from chia.util.condition_tools import conditions_dict_for_solution, pkm_pairs_fo
13
12
 
14
13
  @dataclass
15
14
  class KeyTool:
16
- dict: Dict[G1Element, int] = field(default_factory=dict)
15
+ dict: dict[G1Element, int] = field(default_factory=dict)
17
16
 
18
- def add_secret_exponents(self, secret_exponents: List[int]) -> None:
17
+ def add_secret_exponents(self, secret_exponents: list[int]) -> None:
19
18
  for _ in secret_exponents:
20
19
  self.dict[int_to_public_key(_)] = _ % GROUP_ORDER
21
20