chia-blockchain 2.5.4rc1__py3-none-any.whl → 2.5.5__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 (453) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +2 -3
  2. chia/_tests/blockchain/test_augmented_chain.py +2 -3
  3. chia/_tests/blockchain/test_blockchain.py +261 -44
  4. chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
  5. chia/_tests/blockchain/test_build_chains.py +197 -1
  6. chia/_tests/blockchain/test_get_block_generator.py +1 -1
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
  8. chia/_tests/clvm/benchmark_costs.py +1 -1
  9. chia/_tests/clvm/coin_store.py +3 -4
  10. chia/_tests/clvm/test_message_conditions.py +2 -2
  11. chia/_tests/clvm/test_puzzle_compression.py +2 -3
  12. chia/_tests/clvm/test_puzzles.py +1 -2
  13. chia/_tests/clvm/test_singletons.py +2 -3
  14. chia/_tests/clvm/test_spend_sim.py +7 -7
  15. chia/_tests/cmds/cmd_test_utils.py +30 -25
  16. chia/_tests/cmds/test_dev_gh.py +1 -1
  17. chia/_tests/cmds/test_farm_cmd.py +1 -1
  18. chia/_tests/cmds/test_show.py +1 -2
  19. chia/_tests/cmds/wallet/test_did.py +101 -56
  20. chia/_tests/cmds/wallet/test_nft.py +109 -84
  21. chia/_tests/cmds/wallet/test_notifications.py +1 -1
  22. chia/_tests/cmds/wallet/test_offer.toffer +1 -1
  23. chia/_tests/cmds/wallet/test_vcs.py +8 -8
  24. chia/_tests/cmds/wallet/test_wallet.py +100 -46
  25. chia/_tests/conftest.py +31 -20
  26. chia/_tests/connection_utils.py +1 -1
  27. chia/_tests/core/consensus/stores/__init__.py +0 -0
  28. chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
  29. chia/_tests/core/consensus/test_block_creation.py +2 -31
  30. chia/_tests/core/consensus/test_pot_iterations.py +38 -3
  31. chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
  32. chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
  33. chia/_tests/core/daemon/test_daemon.py +80 -0
  34. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  35. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  36. chia/_tests/core/data_layer/test_data_rpc.py +14 -10
  37. chia/_tests/core/data_layer/test_data_store.py +5 -5
  38. chia/_tests/core/farmer/test_farmer_api.py +2 -2
  39. chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
  40. chia/_tests/core/full_node/ram_db.py +3 -1
  41. chia/_tests/core/full_node/stores/test_block_store.py +28 -16
  42. chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
  43. chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
  44. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  45. chia/_tests/core/full_node/test_address_manager.py +200 -27
  46. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  47. chia/_tests/core/full_node/test_conditions.py +7 -6
  48. chia/_tests/core/full_node/test_full_node.py +456 -40
  49. chia/_tests/core/full_node/test_generator_tools.py +32 -2
  50. chia/_tests/core/full_node/test_hint_management.py +1 -1
  51. chia/_tests/core/full_node/test_node_load.py +20 -21
  52. chia/_tests/core/full_node/test_performance.py +3 -4
  53. chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
  54. chia/_tests/core/full_node/test_subscriptions.py +1 -2
  55. chia/_tests/core/full_node/test_transactions.py +9 -5
  56. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
  57. chia/_tests/core/large_block.py +1 -2
  58. chia/_tests/core/make_block_generator.py +3 -4
  59. chia/_tests/core/mempool/test_mempool.py +36 -86
  60. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  61. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
  62. chia/_tests/core/mempool/test_mempool_manager.py +529 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
  65. chia/_tests/core/server/flood.py +1 -1
  66. chia/_tests/core/server/test_dos.py +1 -1
  67. chia/_tests/core/server/test_node_discovery.py +41 -27
  68. chia/_tests/core/server/test_rate_limits.py +1 -1
  69. chia/_tests/core/server/test_server.py +1 -1
  70. chia/_tests/core/services/test_services.py +5 -5
  71. chia/_tests/core/ssl/test_ssl.py +1 -1
  72. chia/_tests/core/test_cost_calculation.py +6 -6
  73. chia/_tests/core/test_crawler.py +2 -2
  74. chia/_tests/core/test_crawler_rpc.py +1 -1
  75. chia/_tests/core/test_db_conversion.py +3 -1
  76. chia/_tests/core/test_db_validation.py +5 -3
  77. chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
  78. chia/_tests/core/test_filter.py +4 -1
  79. chia/_tests/core/test_full_node_rpc.py +99 -82
  80. chia/_tests/core/test_program.py +2 -2
  81. chia/_tests/core/util/test_block_cache.py +1 -1
  82. chia/_tests/core/util/test_keychain.py +2 -2
  83. chia/_tests/core/util/test_lockfile.py +1 -1
  84. chia/_tests/core/util/test_log_exceptions.py +5 -5
  85. chia/_tests/core/util/test_streamable.py +81 -22
  86. chia/_tests/db/test_db_wrapper.py +1 -3
  87. chia/_tests/environments/wallet.py +5 -5
  88. chia/_tests/farmer_harvester/test_farmer.py +9 -7
  89. chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
  90. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  91. chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
  92. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
  93. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
  94. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  95. chia/_tests/generator/test_compression.py +1 -2
  96. chia/_tests/generator/test_rom.py +8 -4
  97. chia/_tests/plot_sync/test_plot_sync.py +3 -3
  98. chia/_tests/plot_sync/test_receiver.py +3 -3
  99. chia/_tests/plot_sync/test_sender.py +1 -1
  100. chia/_tests/plot_sync/test_sync_simulated.py +3 -3
  101. chia/_tests/plot_sync/util.py +2 -2
  102. chia/_tests/pools/test_pool_cmdline.py +48 -21
  103. chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
  104. chia/_tests/pools/test_pool_rpc.py +237 -105
  105. chia/_tests/pools/test_pool_wallet.py +11 -2
  106. chia/_tests/pools/test_wallet_pool_store.py +5 -4
  107. chia/_tests/rpc/test_rpc_client.py +1 -1
  108. chia/_tests/simulation/test_simulation.py +13 -8
  109. chia/_tests/simulation/test_simulator.py +2 -2
  110. chia/_tests/timelord/test_new_peak.py +191 -47
  111. chia/_tests/timelord/test_timelord.py +1 -1
  112. chia/_tests/tools/test_full_sync.py +0 -2
  113. chia/_tests/tools/test_run_block.py +3 -1
  114. chia/_tests/util/benchmark_cost.py +3 -3
  115. chia/_tests/util/benchmarks.py +2 -2
  116. chia/_tests/util/blockchain.py +11 -5
  117. chia/_tests/util/blockchain_mock.py +1 -4
  118. chia/_tests/util/coin_store.py +29 -0
  119. chia/_tests/util/constants.py +2 -18
  120. chia/_tests/util/full_sync.py +3 -3
  121. chia/_tests/util/generator_tools_testing.py +2 -3
  122. chia/_tests/util/key_tool.py +2 -3
  123. chia/_tests/util/misc.py +33 -31
  124. chia/_tests/util/network_protocol_data.py +19 -17
  125. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  126. chia/_tests/util/protocol_messages_json.py +3 -1
  127. chia/_tests/util/run_block.py +2 -2
  128. chia/_tests/util/setup_nodes.py +7 -7
  129. chia/_tests/util/spend_sim.py +47 -55
  130. chia/_tests/util/test_condition_tools.py +5 -4
  131. chia/_tests/util/test_config.py +2 -2
  132. chia/_tests/util/test_dump_keyring.py +1 -1
  133. chia/_tests/util/test_full_block_utils.py +12 -14
  134. chia/_tests/util/test_misc.py +2 -2
  135. chia/_tests/util/test_paginator.py +4 -4
  136. chia/_tests/util/test_priority_mutex.py +2 -2
  137. chia/_tests/util/test_replace_str_to_bytes.py +15 -5
  138. chia/_tests/util/test_ssl_check.py +1 -1
  139. chia/_tests/util/test_testnet_overrides.py +13 -3
  140. chia/_tests/util/time_out_assert.py +4 -2
  141. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  142. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
  143. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
  144. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
  145. chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
  146. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
  147. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
  148. chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
  149. chia/_tests/wallet/conftest.py +11 -12
  150. chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
  151. chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
  152. chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
  153. chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
  154. chia/_tests/wallet/nft_wallet/config.py +1 -1
  155. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
  156. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
  157. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
  158. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
  159. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
  160. chia/_tests/wallet/rpc/test_wallet_rpc.py +495 -265
  161. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
  162. chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
  163. chia/_tests/wallet/test_clvm_casts.py +88 -0
  164. chia/_tests/wallet/test_coin_management.py +1 -1
  165. chia/_tests/wallet/test_coin_selection.py +1 -1
  166. chia/_tests/wallet/test_conditions.py +1 -1
  167. chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
  168. chia/_tests/wallet/test_notifications.py +5 -3
  169. chia/_tests/wallet/test_sign_coin_spends.py +6 -6
  170. chia/_tests/wallet/test_signer_protocol.py +13 -12
  171. chia/_tests/wallet/test_singleton.py +1 -1
  172. chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
  173. chia/_tests/wallet/test_util.py +2 -2
  174. chia/_tests/wallet/test_wallet.py +108 -29
  175. chia/_tests/wallet/test_wallet_action_scope.py +9 -2
  176. chia/_tests/wallet/test_wallet_blockchain.py +2 -3
  177. chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
  178. chia/_tests/wallet/test_wallet_node.py +2 -4
  179. chia/_tests/wallet/test_wallet_retry.py +4 -2
  180. chia/_tests/wallet/test_wallet_state_manager.py +191 -5
  181. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  182. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
  183. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
  184. chia/_tests/wallet/wallet_block_tools.py +6 -6
  185. chia/_tests/weight_proof/test_weight_proof.py +10 -48
  186. chia/apis.py +1 -1
  187. chia/cmds/beta.py +1 -1
  188. chia/cmds/chia.py +9 -9
  189. chia/cmds/cmd_classes.py +12 -11
  190. chia/cmds/cmd_helpers.py +1 -1
  191. chia/cmds/cmds_util.py +12 -9
  192. chia/cmds/coin_funcs.py +2 -2
  193. chia/cmds/configure.py +2 -2
  194. chia/cmds/data.py +0 -2
  195. chia/cmds/data_funcs.py +1 -1
  196. chia/cmds/db_validate_func.py +1 -2
  197. chia/cmds/dev/__init__.py +0 -0
  198. chia/cmds/dev/data.py +273 -0
  199. chia/cmds/{gh.py → dev/gh.py} +5 -5
  200. chia/cmds/dev/main.py +22 -0
  201. chia/cmds/dev/mempool.py +78 -0
  202. chia/cmds/dev/mempool_funcs.py +63 -0
  203. chia/cmds/farm_funcs.py +5 -4
  204. chia/cmds/init_funcs.py +11 -11
  205. chia/cmds/keys.py +2 -2
  206. chia/cmds/keys_funcs.py +4 -4
  207. chia/cmds/netspace_funcs.py +1 -1
  208. chia/cmds/peer_funcs.py +2 -2
  209. chia/cmds/plotnft_funcs.py +72 -26
  210. chia/cmds/rpc.py +1 -1
  211. chia/cmds/show_funcs.py +5 -5
  212. chia/cmds/signer.py +8 -7
  213. chia/cmds/sim_funcs.py +8 -9
  214. chia/cmds/wallet.py +2 -2
  215. chia/cmds/wallet_funcs.py +165 -131
  216. chia/{util → consensus}/augmented_chain.py +1 -2
  217. chia/consensus/block_body_validation.py +54 -40
  218. chia/consensus/block_creation.py +42 -76
  219. chia/consensus/block_header_validation.py +32 -26
  220. chia/consensus/block_record.py +0 -3
  221. chia/consensus/blockchain.py +23 -32
  222. chia/consensus/blockchain_interface.py +1 -5
  223. chia/consensus/check_time_locks.py +57 -0
  224. chia/consensus/coin_store_protocol.py +151 -0
  225. chia/consensus/coinbase.py +0 -6
  226. chia/consensus/condition_costs.py +4 -0
  227. chia/{util → consensus}/condition_tools.py +4 -5
  228. chia/consensus/cost_calculator.py +1 -1
  229. chia/consensus/default_constants.py +32 -9
  230. chia/consensus/deficit.py +1 -3
  231. chia/consensus/difficulty_adjustment.py +1 -2
  232. chia/consensus/find_fork_point.py +1 -3
  233. chia/consensus/full_block_to_block_record.py +1 -6
  234. chia/{util → consensus}/generator_tools.py +1 -3
  235. chia/consensus/get_block_challenge.py +30 -7
  236. chia/consensus/make_sub_epoch_summary.py +1 -5
  237. chia/consensus/multiprocess_validation.py +21 -20
  238. chia/consensus/pot_iterations.py +74 -13
  239. chia/{util → consensus}/prev_transaction_block.py +1 -1
  240. chia/consensus/vdf_info_computation.py +1 -3
  241. chia/daemon/keychain_proxy.py +5 -5
  242. chia/daemon/server.py +22 -5
  243. chia/data_layer/data_layer.py +92 -51
  244. chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
  245. chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
  246. chia/data_layer/data_layer_util.py +4 -6
  247. chia/data_layer/data_layer_wallet.py +42 -69
  248. chia/data_layer/dl_wallet_store.py +12 -6
  249. chia/data_layer/download_data.py +3 -3
  250. chia/data_layer/s3_plugin_service.py +0 -1
  251. chia/farmer/farmer.py +3 -4
  252. chia/farmer/farmer_api.py +11 -7
  253. chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
  254. chia/full_node/block_height_map.py +7 -6
  255. chia/full_node/block_store.py +5 -7
  256. chia/full_node/bundle_tools.py +1 -2
  257. chia/full_node/coin_store.py +153 -124
  258. chia/{types → full_node}/eligible_coin_spends.py +39 -70
  259. chia/full_node/fee_estimator.py +1 -1
  260. chia/full_node/fee_estimator_interface.py +0 -8
  261. chia/full_node/fee_tracker.py +25 -25
  262. chia/full_node/full_node.py +70 -53
  263. chia/full_node/full_node_api.py +57 -40
  264. chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
  265. chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
  266. chia/full_node/full_node_store.py +23 -8
  267. chia/full_node/mempool.py +206 -53
  268. chia/full_node/mempool_check_conditions.py +20 -63
  269. chia/full_node/mempool_manager.py +53 -47
  270. chia/full_node/subscriptions.py +1 -3
  271. chia/full_node/tx_processing_queue.py +50 -3
  272. chia/full_node/weight_proof.py +46 -37
  273. chia/harvester/harvester.py +1 -1
  274. chia/harvester/harvester_api.py +22 -7
  275. chia/introducer/introducer.py +1 -1
  276. chia/introducer/introducer_api.py +1 -1
  277. chia/plot_sync/exceptions.py +1 -1
  278. chia/plot_sync/receiver.py +1 -1
  279. chia/plot_sync/sender.py +2 -2
  280. chia/pools/pool_puzzles.py +13 -18
  281. chia/pools/pool_wallet.py +23 -46
  282. chia/protocols/farmer_protocol.py +11 -3
  283. chia/protocols/full_node_protocol.py +1 -4
  284. chia/protocols/harvester_protocol.py +3 -3
  285. chia/protocols/pool_protocol.py +1 -2
  286. chia/protocols/shared_protocol.py +3 -3
  287. chia/protocols/timelord_protocol.py +1 -3
  288. chia/protocols/wallet_protocol.py +3 -3
  289. chia/rpc/rpc_client.py +7 -8
  290. chia/rpc/rpc_server.py +3 -3
  291. chia/rpc/util.py +3 -1
  292. chia/seeder/crawler.py +1 -1
  293. chia/seeder/crawler_api.py +1 -1
  294. chia/seeder/dns_server.py +2 -0
  295. chia/seeder/start_crawler.py +3 -3
  296. chia/server/address_manager.py +286 -38
  297. chia/server/address_manager_store.py +0 -215
  298. chia/{types → server}/aliases.py +7 -7
  299. chia/server/api_protocol.py +1 -1
  300. chia/server/chia_policy.py +1 -1
  301. chia/server/node_discovery.py +76 -113
  302. chia/server/rate_limits.py +1 -1
  303. chia/server/resolve_peer_info.py +43 -0
  304. chia/server/server.py +5 -5
  305. chia/server/start_data_layer.py +4 -4
  306. chia/server/start_farmer.py +5 -4
  307. chia/server/start_full_node.py +5 -4
  308. chia/server/start_harvester.py +7 -5
  309. chia/server/start_introducer.py +2 -2
  310. chia/server/start_service.py +1 -1
  311. chia/server/start_timelord.py +7 -5
  312. chia/server/start_wallet.py +7 -5
  313. chia/server/ws_connection.py +1 -1
  314. chia/simulator/add_blocks_in_batches.py +2 -2
  315. chia/simulator/block_tools.py +245 -201
  316. chia/simulator/full_node_simulator.py +38 -10
  317. chia/simulator/setup_services.py +12 -12
  318. chia/simulator/simulator_full_node_rpc_api.py +2 -2
  319. chia/simulator/simulator_full_node_rpc_client.py +2 -2
  320. chia/simulator/simulator_test_tools.py +2 -2
  321. chia/simulator/start_simulator.py +1 -1
  322. chia/simulator/wallet_tools.py +10 -18
  323. chia/ssl/create_ssl.py +1 -1
  324. chia/timelord/iters_from_block.py +14 -14
  325. chia/timelord/timelord.py +15 -11
  326. chia/timelord/timelord_api.py +14 -2
  327. chia/timelord/timelord_state.py +20 -14
  328. chia/types/blockchain_format/program.py +53 -10
  329. chia/types/blockchain_format/proof_of_space.py +73 -19
  330. chia/types/coin_spend.py +3 -56
  331. chia/types/generator_types.py +28 -0
  332. chia/types/internal_mempool_item.py +1 -2
  333. chia/types/mempool_item.py +12 -7
  334. chia/types/unfinished_header_block.py +1 -2
  335. chia/types/validation_state.py +1 -2
  336. chia/types/weight_proof.py +1 -3
  337. chia/util/action_scope.py +3 -3
  338. chia/util/block_cache.py +1 -2
  339. chia/util/byte_types.py +1 -1
  340. chia/util/casts.py +21 -0
  341. chia/util/config.py +0 -37
  342. chia/util/db_wrapper.py +8 -1
  343. chia/util/errors.py +3 -2
  344. chia/util/initial-config.yaml +21 -5
  345. chia/util/keychain.py +6 -7
  346. chia/util/keyring_wrapper.py +5 -5
  347. chia/util/limited_semaphore.py +1 -1
  348. chia/util/priority_mutex.py +1 -1
  349. chia/util/streamable.py +63 -5
  350. chia/util/task_timing.py +1 -1
  351. chia/util/virtual_project_analysis.py +1 -1
  352. chia/wallet/cat_wallet/cat_info.py +7 -3
  353. chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
  354. chia/wallet/cat_wallet/cat_utils.py +1 -1
  355. chia/wallet/cat_wallet/cat_wallet.py +44 -36
  356. chia/wallet/cat_wallet/lineage_store.py +7 -0
  357. chia/wallet/cat_wallet/r_cat_wallet.py +274 -0
  358. chia/wallet/conditions.py +5 -10
  359. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
  360. chia/wallet/derivation_record.py +33 -0
  361. chia/wallet/derive_keys.py +3 -3
  362. chia/wallet/did_wallet/did_info.py +12 -3
  363. chia/wallet/did_wallet/did_wallet.py +132 -101
  364. chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
  365. chia/wallet/driver_protocol.py +3 -1
  366. chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
  367. chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
  368. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  369. chia/wallet/nft_wallet/nft_wallet.py +69 -112
  370. chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
  371. chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
  372. chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
  373. chia/wallet/nft_wallet/uncurry_nft.py +4 -6
  374. chia/wallet/notification_manager.py +2 -3
  375. chia/wallet/outer_puzzles.py +7 -2
  376. chia/wallet/puzzle_drivers.py +1 -1
  377. chia/wallet/puzzles/clawback/drivers.py +5 -4
  378. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
  379. chia/wallet/puzzles/singleton_top_layer.py +2 -1
  380. chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
  381. chia/wallet/puzzles/tails.py +1 -3
  382. chia/wallet/signer_protocol.py +5 -6
  383. chia/wallet/singleton.py +5 -4
  384. chia/wallet/singleton_record.py +1 -1
  385. chia/wallet/trade_manager.py +18 -20
  386. chia/wallet/trade_record.py +3 -6
  387. chia/wallet/trading/offer.py +12 -13
  388. chia/wallet/uncurried_puzzle.py +2 -2
  389. chia/wallet/util/compute_additions.py +58 -0
  390. chia/wallet/util/compute_hints.py +3 -3
  391. chia/wallet/util/compute_memos.py +4 -4
  392. chia/wallet/util/curry_and_treehash.py +2 -1
  393. chia/wallet/util/debug_spend_bundle.py +1 -1
  394. chia/wallet/util/merkle_tree.py +1 -1
  395. chia/wallet/util/peer_request_cache.py +1 -2
  396. chia/wallet/util/tx_config.py +3 -8
  397. chia/wallet/util/wallet_sync_utils.py +10 -5
  398. chia/wallet/util/wallet_types.py +1 -0
  399. chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
  400. chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
  401. chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
  402. chia/wallet/vc_wallet/vc_drivers.py +50 -8
  403. chia/wallet/vc_wallet/vc_store.py +3 -5
  404. chia/wallet/vc_wallet/vc_wallet.py +15 -22
  405. chia/wallet/wallet.py +36 -46
  406. chia/wallet/wallet_action_scope.py +73 -4
  407. chia/wallet/wallet_blockchain.py +1 -3
  408. chia/wallet/wallet_interested_store.py +1 -1
  409. chia/wallet/wallet_nft_store.py +3 -3
  410. chia/wallet/wallet_node.py +17 -16
  411. chia/wallet/wallet_node_api.py +4 -5
  412. chia/wallet/wallet_pool_store.py +1 -1
  413. chia/wallet/wallet_protocol.py +2 -0
  414. chia/wallet/wallet_puzzle_store.py +1 -1
  415. chia/{rpc → wallet}/wallet_request_types.py +670 -81
  416. chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
  417. chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
  418. chia/wallet/wallet_singleton_store.py +8 -7
  419. chia/wallet/wallet_spend_bundle.py +4 -3
  420. chia/wallet/wallet_state_manager.py +320 -191
  421. chia/wallet/wallet_weight_proof_handler.py +1 -2
  422. chia/wallet/wsm_apis.py +98 -0
  423. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/RECORD +443 -436
  425. mozilla-ca/cacert.pem +3 -165
  426. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
  427. chia/cmds/dev.py +0 -18
  428. chia/types/blockchain_format/slots.py +0 -9
  429. chia/types/blockchain_format/sub_epoch_summary.py +0 -5
  430. chia/types/end_of_slot_bundle.py +0 -5
  431. chia/types/full_block.py +0 -5
  432. chia/types/header_block.py +0 -5
  433. chia/types/spend_bundle_conditions.py +0 -7
  434. chia/types/transaction_queue_entry.py +0 -56
  435. chia/types/unfinished_block.py +0 -5
  436. /chia/cmds/{installers.py → dev/installers.py} +0 -0
  437. /chia/cmds/{sim.py → dev/sim.py} +0 -0
  438. /chia/{util → cmds}/dump_keyring.py +0 -0
  439. /chia/{full_node → consensus}/signage_point.py +0 -0
  440. /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
  441. /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
  442. /chia/{util → full_node}/full_block_utils.py +0 -0
  443. /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
  444. /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
  445. /chia/{full_node → protocols}/fee_estimate.py +0 -0
  446. /chia/{server → protocols}/outbound_message.py +0 -0
  447. /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
  448. /chia/{util → simulator}/vdf_prover.py +0 -0
  449. /chia/{util → ssl}/ssl_check.py +0 -0
  450. /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
  451. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc1.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
@@ -8,7 +8,7 @@ import struct
8
8
  import sys
9
9
 
10
10
  if sys.platform == "win32":
11
- import _overlapped
11
+ import _overlapped # type: ignore[import-not-found]
12
12
  import _winapi
13
13
 
14
14
  from collections.abc import Iterable
@@ -1,14 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
+ import contextlib
4
5
  import math
5
6
  import random
6
7
  import time
7
8
  import traceback
9
+ from collections.abc import AsyncIterator
10
+ from dataclasses import dataclass, field
8
11
  from logging import Logger
9
12
  from pathlib import Path
10
13
  from random import Random
11
- from secrets import randbits
12
14
  from typing import Any, Optional
13
15
 
14
16
  import dns.asyncresolver
@@ -16,13 +18,13 @@ from chia_rs.sized_ints import uint16, uint64
16
18
 
17
19
  from chia.protocols.full_node_protocol import RequestPeers, RespondPeers
18
20
  from chia.protocols.introducer_protocol import RequestPeersIntroducer
21
+ from chia.protocols.outbound_message import Message, NodeType, make_msg
19
22
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
20
23
  from chia.server.address_manager import AddressManager, ExtendedPeerInfo
21
- from chia.server.address_manager_store import AddressManagerStore
22
- from chia.server.outbound_message import Message, NodeType, make_msg
23
24
  from chia.server.server import ChiaServer
24
25
  from chia.server.ws_connection import WSChiaConnection
25
26
  from chia.types.peer_info import PeerInfo, TimestampedPeerInfo, UnresolvedPeerInfo
27
+ from chia.util.files import write_file_async
26
28
  from chia.util.hash import std_hash
27
29
  from chia.util.ip_address import IPAddress
28
30
  from chia.util.network import resolve
@@ -40,59 +42,52 @@ NETWORK_ID_DEFAULT_PORTS = {
40
42
  }
41
43
 
42
44
 
45
+ @dataclass
43
46
  class FullNodeDiscovery:
44
- resolver: Optional[dns.asyncresolver.Resolver]
45
- enable_private_networks: bool
46
-
47
- def __init__(
48
- self,
49
- server: ChiaServer,
50
- target_outbound_count: int,
51
- peers_file_path: Path,
52
- introducer_info: Optional[dict[str, Any]],
53
- dns_servers: list[str],
54
- peer_connect_interval: int,
55
- selected_network: str,
56
- default_port: Optional[int],
57
- log: Logger,
58
- ) -> None:
59
- self.server: ChiaServer = server
60
- self.is_closed = False
61
- self.target_outbound_count = target_outbound_count
62
- self.legacy_peer_db_migrated = False
63
- self.peers_file_path = peers_file_path
64
- self.dns_servers = dns_servers
65
- random.shuffle(dns_servers) # Don't always start with the same DNS server
66
- self.introducer_info: Optional[UnresolvedPeerInfo] = None
67
- if introducer_info is not None:
68
- self.introducer_info = UnresolvedPeerInfo(introducer_info["host"], introducer_info["port"])
69
- self.enable_private_networks = introducer_info.get("enable_private_networks", False)
70
- else:
71
- self.enable_private_networks = False
72
- self.peer_connect_interval = peer_connect_interval
73
- self.log = log
74
- self.relay_queue: Optional[asyncio.Queue[tuple[TimestampedPeerInfo, int]]] = None
75
- self.address_manager: Optional[AddressManager] = None
76
- self.connection_time_pretest: dict[str, Any] = {}
77
- self.received_count_from_peers: dict[str, Any] = {}
78
- self.lock = asyncio.Lock()
79
- self.connect_peers_task: Optional[asyncio.Task[None]] = None
80
- self.serialize_task: Optional[asyncio.Task[None]] = None
81
- self.cleanup_task: Optional[asyncio.Task[None]] = None
82
- self.initial_wait: int = 0
47
+ server: ChiaServer
48
+ target_outbound_count: int
49
+ peers_file_path: Path
50
+ dns_servers: list[str]
51
+ peer_connect_interval: int
52
+ selected_network: str
53
+ log: Logger
54
+ introducer_info: Optional[dict[str, Any]] = None
55
+ default_port: Optional[int] = None
56
+ resolver: Optional[dns.asyncresolver.Resolver] = field(default=None)
57
+ enable_private_networks: bool = field(default=False)
58
+ is_closed: bool = field(default=False)
59
+ legacy_peer_db_migrated: bool = field(default=False)
60
+ relay_queue: Optional[asyncio.Queue[tuple[TimestampedPeerInfo, int]]] = field(default=None)
61
+ address_manager: Optional[AddressManager] = field(default=None)
62
+ connection_time_pretest: dict[str, Any] = field(default_factory=dict)
63
+ received_count_from_peers: dict[str, Any] = field(default_factory=dict)
64
+ lock: asyncio.Lock = field(default_factory=asyncio.Lock)
65
+ connect_peers_task: Optional[asyncio.Task[None]] = field(default=None)
66
+ serialize_task: Optional[asyncio.Task[None]] = field(default=None)
67
+ cleanup_task: Optional[asyncio.Task[None]] = field(default=None)
68
+ initial_wait: int = field(default=0)
69
+ pending_outbound_connections: set[str] = field(default_factory=set)
70
+ pending_tasks: set[asyncio.Task[None]] = field(default_factory=set)
71
+ introducer_info_obj: Optional[UnresolvedPeerInfo] = field(default=None)
72
+
73
+ def __post_init__(self) -> None:
74
+ random.shuffle(self.dns_servers) # Don't always start with the same DNS server
75
+
76
+ if self.introducer_info is not None:
77
+ self.introducer_info_obj = UnresolvedPeerInfo(self.introducer_info["host"], self.introducer_info["port"])
78
+ self.enable_private_networks = self.introducer_info.get("enable_private_networks", False)
79
+
83
80
  try:
84
- self.resolver: Optional[dns.asyncresolver.Resolver] = dns.asyncresolver.Resolver()
81
+ self.resolver = dns.asyncresolver.Resolver()
85
82
  except Exception:
86
83
  self.resolver = None
87
84
  self.log.exception("Error initializing asyncresolver")
88
- self.pending_outbound_connections: set[str] = set()
89
- self.pending_tasks: set[asyncio.Task[None]] = set()
90
- self.default_port: Optional[int] = default_port
91
- if default_port is None and selected_network in NETWORK_ID_DEFAULT_PORTS:
92
- self.default_port = NETWORK_ID_DEFAULT_PORTS[selected_network]
85
+
86
+ if self.default_port is None and self.selected_network in NETWORK_ID_DEFAULT_PORTS:
87
+ self.default_port = NETWORK_ID_DEFAULT_PORTS[self.selected_network]
93
88
 
94
89
  async def initialize_address_manager(self) -> None:
95
- self.address_manager = await AddressManagerStore.create_address_manager(self.peers_file_path)
90
+ self.address_manager = await AddressManager.create_address_manager(self.peers_file_path)
96
91
  if self.enable_private_networks:
97
92
  self.address_manager.make_private_subnets_valid()
98
93
  self.server.set_received_message_callback(self.update_peer_timestamp_on_message)
@@ -175,7 +170,7 @@ class FullNodeDiscovery:
175
170
  )
176
171
 
177
172
  async def _introducer_client(self) -> None:
178
- if self.introducer_info is None:
173
+ if self.introducer_info_obj is None:
179
174
  return None
180
175
 
181
176
  async def on_connect(peer: WSChiaConnection) -> None:
@@ -183,7 +178,8 @@ class FullNodeDiscovery:
183
178
  await peer.send_message(msg)
184
179
 
185
180
  await self.server.start_client(
186
- PeerInfo(await resolve(self.introducer_info.host, prefer_ipv6=False), self.introducer_info.port), on_connect
181
+ PeerInfo(await resolve(self.introducer_info_obj.host, prefer_ipv6=False), self.introducer_info_obj.port),
182
+ on_connect,
187
183
  )
188
184
 
189
185
  async def _query_dns(self, dns_address: str) -> None:
@@ -418,7 +414,8 @@ class FullNodeDiscovery:
418
414
  serialize_interval = random.randint(15 * 60, 30 * 60)
419
415
  await asyncio.sleep(serialize_interval)
420
416
  async with self.address_manager.lock:
421
- await AddressManagerStore.serialize(self.address_manager, self.peers_file_path)
417
+ serialised_bytes = self.address_manager.serialize_bytes()
418
+ await write_file_async(self.peers_file_path, serialised_bytes, file_mode=0o644)
422
419
 
423
420
  async def _periodically_cleanup(self) -> None:
424
421
  while not self.is_closed:
@@ -490,47 +487,33 @@ class FullNodeDiscovery:
490
487
  await self.address_manager.add_to_new_table(peers_adjusted_timestamp, None, 0)
491
488
 
492
489
 
490
+ @dataclass
493
491
  class FullNodePeers(FullNodeDiscovery):
494
- self_advertise_task: Optional[asyncio.Task[None]] = None
495
- address_relay_task: Optional[asyncio.Task[None]] = None
496
-
497
- def __init__(
498
- self,
499
- server: ChiaServer,
500
- target_outbound_count: int,
501
- peers_file_path: Path,
502
- introducer_info: dict[str, Any],
503
- dns_servers: list[str],
504
- peer_connect_interval: int,
505
- selected_network: str,
506
- default_port: Optional[int],
507
- log: Logger,
508
- ) -> None:
509
- super().__init__(
510
- server,
511
- target_outbound_count,
512
- peers_file_path,
513
- introducer_info,
514
- dns_servers,
515
- peer_connect_interval,
516
- selected_network,
517
- default_port,
518
- log,
519
- )
520
- self.relay_queue = asyncio.Queue()
521
- self.neighbour_known_peers: dict[PeerInfo, set[str]] = {}
522
- self.key = randbits(256)
492
+ self_advertise_task: Optional[asyncio.Task[None]] = field(default=None)
493
+ address_relay_task: Optional[asyncio.Task[None]] = field(default=None)
494
+ relay_queue: asyncio.Queue[tuple[TimestampedPeerInfo, int]] = field(default_factory=asyncio.Queue)
495
+ neighbour_known_peers: dict[PeerInfo, set[str]] = field(default_factory=dict)
496
+ key: int = field(default_factory=lambda: random.getrandbits(256))
523
497
 
524
- async def start(self) -> None:
525
- await self.initialize_address_manager()
526
- self.self_advertise_task = create_referenced_task(self._periodically_self_advertise_and_clean_data())
527
- self.address_relay_task = create_referenced_task(self._address_relay())
528
- await self.start_tasks()
498
+ def __post_init__(self) -> None:
499
+ super().__post_init__()
529
500
 
530
- async def close(self) -> None:
531
- await self._close_common()
532
- cancel_task_safe(self.self_advertise_task, self.log)
533
- cancel_task_safe(self.address_relay_task, self.log)
501
+ @contextlib.asynccontextmanager
502
+ async def manage(self) -> AsyncIterator[None]:
503
+ try:
504
+ self.log.info("Initialising Full Node peers discovery.")
505
+ await self.initialize_address_manager()
506
+ self.self_advertise_task = create_referenced_task(self._periodically_self_advertise_and_clean_data())
507
+ self.address_relay_task = create_referenced_task(self._address_relay())
508
+ await self.start_tasks()
509
+ self.log.info("Successfully initialised Full Node peers discovery.")
510
+ yield
511
+ finally:
512
+ self.log.info("Closing Full Node peers discovery.")
513
+ await self._close_common()
514
+ cancel_task_safe(self.self_advertise_task, self.log)
515
+ cancel_task_safe(self.address_relay_task, self.log)
516
+ self.log.info("Successfully closed Full Node peers discovery.")
534
517
 
535
518
  async def _periodically_self_advertise_and_clean_data(self) -> None:
536
519
  while not self.is_closed:
@@ -673,30 +656,10 @@ class FullNodePeers(FullNodeDiscovery):
673
656
  self.log.error(f"Traceback: {traceback.format_exc()}")
674
657
 
675
658
 
659
+ @dataclass
676
660
  class WalletPeers(FullNodeDiscovery):
677
- def __init__(
678
- self,
679
- server: ChiaServer,
680
- target_outbound_count: int,
681
- peers_file_path: Path,
682
- introducer_info: dict[str, Any],
683
- dns_servers: list[str],
684
- peer_connect_interval: int,
685
- selected_network: str,
686
- default_port: Optional[int],
687
- log: Logger,
688
- ) -> None:
689
- super().__init__(
690
- server,
691
- target_outbound_count,
692
- peers_file_path,
693
- introducer_info,
694
- dns_servers,
695
- peer_connect_interval,
696
- selected_network,
697
- default_port,
698
- log,
699
- )
661
+ def __post_init__(self) -> None:
662
+ super().__post_init__()
700
663
 
701
664
  async def start(self) -> None:
702
665
  self.initial_wait = 1
@@ -6,9 +6,9 @@ import time
6
6
  from collections import Counter
7
7
  from typing import Optional
8
8
 
9
+ from chia.protocols.outbound_message import Message
9
10
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
10
11
  from chia.protocols.shared_protocol import Capability
11
- from chia.server.outbound_message import Message
12
12
  from chia.server.rate_limit_numbers import RLSettings, Unlimited, get_rate_limits_to_use
13
13
 
14
14
  log = logging.getLogger(__name__)
@@ -0,0 +1,43 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import Any, Optional
5
+
6
+ from chia.protocols.outbound_message import NodeType
7
+ from chia.types.peer_info import UnresolvedPeerInfo
8
+
9
+ log = logging.getLogger(__name__)
10
+
11
+ PEER_INFO_MAPPING: dict[NodeType, str] = {
12
+ NodeType.FULL_NODE: "full_node_peer",
13
+ NodeType.FARMER: "farmer_peer",
14
+ }
15
+
16
+
17
+ def get_unresolved_peer_infos(service_config: dict[str, Any], peer_type: NodeType) -> set[UnresolvedPeerInfo]:
18
+ peer_info_key = PEER_INFO_MAPPING[peer_type]
19
+ peer_infos: list[dict[str, Any]] = service_config.get(f"{peer_info_key}s", [])
20
+ peer_info: Optional[dict[str, Any]] = service_config.get(peer_info_key)
21
+ if peer_info is not None:
22
+ peer_infos.append(peer_info)
23
+
24
+ return {UnresolvedPeerInfo(host=peer["host"], port=peer["port"]) for peer in peer_infos}
25
+
26
+
27
+ def set_peer_info(
28
+ service_config: dict[str, Any],
29
+ peer_type: NodeType,
30
+ peer_host: Optional[str] = None,
31
+ peer_port: Optional[int] = None,
32
+ ) -> None:
33
+ peer_info_key = PEER_INFO_MAPPING[peer_type]
34
+ if peer_info_key in service_config:
35
+ if peer_host is not None:
36
+ service_config[peer_info_key]["host"] = peer_host
37
+ if peer_port is not None:
38
+ service_config[peer_info_key]["port"] = peer_port
39
+ elif f"{peer_info_key}s" in service_config and len(service_config[f"{peer_info_key}s"]) > 0:
40
+ if peer_host is not None:
41
+ service_config[f"{peer_info_key}s"][0]["host"] = peer_host
42
+ if peer_port is not None:
43
+ service_config[f"{peer_info_key}s"][0]["port"] = peer_port
chia/server/server.py CHANGED
@@ -27,18 +27,18 @@ from cryptography.hazmat.backends import default_backend
27
27
  from cryptography.hazmat.primitives import hashes, serialization
28
28
  from typing_extensions import final
29
29
 
30
+ from chia.protocols.outbound_message import Message, NodeType
30
31
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
31
32
  from chia.protocols.protocol_state_machine import message_requires_reply
32
33
  from chia.protocols.protocol_timing import INVALID_PROTOCOL_BAN_SECONDS
33
34
  from chia.server.api_protocol import ApiProtocol
34
35
  from chia.server.introducer_peers import IntroducerPeers
35
- from chia.server.outbound_message import Message, NodeType
36
36
  from chia.server.ssl_context import private_ssl_paths, public_ssl_paths
37
37
  from chia.server.ws_connection import ConnectionCallback, WSChiaConnection
38
+ from chia.ssl.ssl_check import verify_ssl_certs_and_keys
38
39
  from chia.types.peer_info import PeerInfo
39
40
  from chia.util.errors import Err, ProtocolError
40
41
  from chia.util.network import WebServer, is_in_network, is_localhost, is_trusted_peer
41
- from chia.util.ssl_check import verify_ssl_certs_and_keys
42
42
  from chia.util.streamable import Streamable
43
43
  from chia.util.task_referencer import create_referenced_task
44
44
 
@@ -57,7 +57,7 @@ def ssl_context_for_server(
57
57
  if check_permissions:
58
58
  verify_ssl_certs_and_keys([ca_cert, cert_path], [ca_key, key_path], log)
59
59
 
60
- ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.CLIENT_AUTH, cafile=str(ca_cert))
60
+ ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.CLIENT_AUTH, cafile=str(ca_cert)) # noqa: S323
61
61
  ssl_context.check_hostname = False
62
62
  ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
63
63
  ssl_context.set_ciphers(
@@ -99,7 +99,7 @@ def ssl_context_for_client(
99
99
  if check_permissions:
100
100
  verify_ssl_certs_and_keys([ca_cert, cert_path], [ca_key, key_path], log)
101
101
 
102
- ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=str(ca_cert))
102
+ ssl_context = ssl._create_unverified_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=str(ca_cert)) # noqa: S323
103
103
  ssl_context.check_hostname = False
104
104
  ssl_context.load_cert_chain(certfile=str(cert_path), keyfile=str(key_path))
105
105
  ssl_context.verify_mode = ssl.CERT_REQUIRED
@@ -142,7 +142,7 @@ class ChiaServer:
142
142
  connection_close_task: Optional[asyncio.Task[None]] = None
143
143
  received_message_callback: Optional[ConnectionCallback] = None
144
144
  banned_peers: dict[str, float] = field(default_factory=dict)
145
- invalid_protocol_ban_seconds = INVALID_PROTOCOL_BAN_SECONDS
145
+ invalid_protocol_ban_seconds: int = INVALID_PROTOCOL_BAN_SECONDS
146
146
 
147
147
  @classmethod
148
148
  def create(
@@ -11,19 +11,19 @@ from chia_rs.sized_ints import uint16
11
11
  from chia.apis import ApiProtocolRegistry
12
12
  from chia.data_layer.data_layer import DataLayer
13
13
  from chia.data_layer.data_layer_api import DataLayerAPI
14
+ from chia.data_layer.data_layer_rpc_api import DataLayerRpcApi
14
15
  from chia.data_layer.data_layer_util import PluginRemote
15
16
  from chia.data_layer.util.plugin import load_plugin_configurations
16
- from chia.rpc.data_layer_rpc_api import DataLayerRpcApi
17
- from chia.rpc.wallet_rpc_client import WalletRpcClient
18
- from chia.server.outbound_message import NodeType
17
+ from chia.protocols.outbound_message import NodeType
18
+ from chia.server.aliases import DataLayerService, WalletService
19
19
  from chia.server.signal_handlers import SignalHandlers
20
20
  from chia.server.start_service import RpcInfo, Service, async_run
21
21
  from chia.ssl.create_ssl import create_all_ssl
22
- from chia.types.aliases import DataLayerService, WalletService
23
22
  from chia.util.chia_logging import initialize_logging
24
23
  from chia.util.config import load_config, load_config_cli
25
24
  from chia.util.default_root import resolve_root_path
26
25
  from chia.util.task_timing import maybe_manage_task_instrumentation
26
+ from chia.wallet.wallet_rpc_client import WalletRpcClient
27
27
 
28
28
  # See: https://bugs.python.org/issue29288
29
29
  "".encode("idna")
@@ -12,13 +12,14 @@ from chia.consensus.constants import replace_str_to_bytes
12
12
  from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
13
13
  from chia.farmer.farmer import Farmer
14
14
  from chia.farmer.farmer_api import FarmerAPI
15
- from chia.rpc.farmer_rpc_api import FarmerRpcApi
16
- from chia.server.outbound_message import NodeType
15
+ from chia.farmer.farmer_rpc_api import FarmerRpcApi
16
+ from chia.protocols.outbound_message import NodeType
17
+ from chia.server.aliases import FarmerService
18
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos
17
19
  from chia.server.signal_handlers import SignalHandlers
18
20
  from chia.server.start_service import RpcInfo, Service, async_run
19
- from chia.types.aliases import FarmerService
20
21
  from chia.util.chia_logging import initialize_service_logging
21
- from chia.util.config import get_unresolved_peer_infos, load_config, load_config_cli
22
+ from chia.util.config import load_config, load_config_cli
22
23
  from chia.util.default_root import resolve_root_path
23
24
  from chia.util.keychain import Keychain
24
25
  from chia.util.task_timing import maybe_manage_task_instrumentation
@@ -14,13 +14,14 @@ from chia.consensus.constants import replace_str_to_bytes
14
14
  from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
15
15
  from chia.full_node.full_node import FullNode
16
16
  from chia.full_node.full_node_api import FullNodeAPI
17
- from chia.rpc.full_node_rpc_api import FullNodeRpcApi
18
- from chia.server.outbound_message import NodeType
17
+ from chia.full_node.full_node_rpc_api import FullNodeRpcApi
18
+ from chia.protocols.outbound_message import NodeType
19
+ from chia.server.aliases import FullNodeService
20
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos
19
21
  from chia.server.signal_handlers import SignalHandlers
20
22
  from chia.server.start_service import RpcInfo, Service, async_run
21
- from chia.types.aliases import FullNodeService
22
23
  from chia.util.chia_logging import initialize_service_logging
23
- from chia.util.config import get_unresolved_peer_infos, load_config, load_config_cli
24
+ from chia.util.config import load_config, load_config_cli
24
25
  from chia.util.default_root import resolve_root_path
25
26
  from chia.util.task_timing import maybe_manage_task_instrumentation
26
27
 
@@ -9,17 +9,18 @@ from chia_rs import ConsensusConstants
9
9
 
10
10
  from chia.apis import ApiProtocolRegistry
11
11
  from chia.consensus.constants import replace_str_to_bytes
12
- from chia.consensus.default_constants import DEFAULT_CONSTANTS
12
+ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
13
13
  from chia.harvester.harvester import Harvester
14
14
  from chia.harvester.harvester_api import HarvesterAPI
15
- from chia.rpc.harvester_rpc_api import HarvesterRpcApi
16
- from chia.server.outbound_message import NodeType
15
+ from chia.harvester.harvester_rpc_api import HarvesterRpcApi
16
+ from chia.protocols.outbound_message import NodeType
17
+ from chia.server.aliases import HarvesterService
18
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos
17
19
  from chia.server.signal_handlers import SignalHandlers
18
20
  from chia.server.start_service import RpcInfo, Service, async_run
19
- from chia.types.aliases import HarvesterService
20
21
  from chia.types.peer_info import UnresolvedPeerInfo
21
22
  from chia.util.chia_logging import initialize_service_logging
22
- from chia.util.config import get_unresolved_peer_infos, load_config, load_config_cli
23
+ from chia.util.config import load_config, load_config_cli
23
24
  from chia.util.default_root import resolve_root_path
24
25
  from chia.util.task_timing import maybe_manage_task_instrumentation
25
26
 
@@ -40,6 +41,7 @@ def create_harvester_service(
40
41
 
41
42
  network_id = service_config["selected_network"]
42
43
  overrides = service_config["network_overrides"]["constants"][network_id]
44
+ update_testnet_overrides(network_id, overrides)
43
45
  updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
44
46
 
45
47
  node = Harvester(root_path, service_config, updated_constants)
@@ -8,10 +8,10 @@ from typing import Any, Optional
8
8
  from chia.apis import ApiProtocolRegistry
9
9
  from chia.introducer.introducer import Introducer
10
10
  from chia.introducer.introducer_api import IntroducerAPI
11
- from chia.server.outbound_message import NodeType
11
+ from chia.protocols.outbound_message import NodeType
12
+ from chia.server.aliases import IntroducerService
12
13
  from chia.server.signal_handlers import SignalHandlers
13
14
  from chia.server.start_service import Service, async_run
14
- from chia.types.aliases import IntroducerService
15
15
  from chia.util.chia_logging import initialize_service_logging
16
16
  from chia.util.config import load_config, load_config_cli
17
17
  from chia.util.default_root import resolve_root_path
@@ -14,11 +14,11 @@ from typing import Any, Callable, Generic, Optional, TypeVar, cast
14
14
  from chia_rs.sized_ints import uint16
15
15
 
16
16
  from chia.daemon.server import service_launch_lock_path
17
+ from chia.protocols.outbound_message import NodeType
17
18
  from chia.protocols.shared_protocol import default_capabilities
18
19
  from chia.rpc.rpc_server import RpcApiProtocol, RpcServer, RpcServiceProtocol, start_rpc_server
19
20
  from chia.server.api_protocol import ApiProtocol
20
21
  from chia.server.chia_policy import set_chia_policy
21
- from chia.server.outbound_message import NodeType
22
22
  from chia.server.server import ChiaServer
23
23
  from chia.server.signal_handlers import SignalHandlers
24
24
  from chia.server.ssl_context import chia_ssl_ca_paths, private_ssl_ca_paths
@@ -9,16 +9,17 @@ from chia_rs import ConsensusConstants
9
9
 
10
10
  from chia.apis import ApiProtocolRegistry
11
11
  from chia.consensus.constants import replace_str_to_bytes
12
- from chia.consensus.default_constants import DEFAULT_CONSTANTS
13
- from chia.rpc.timelord_rpc_api import TimelordRpcApi
14
- from chia.server.outbound_message import NodeType
12
+ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
13
+ from chia.protocols.outbound_message import NodeType
14
+ from chia.server.aliases import TimelordService
15
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos
15
16
  from chia.server.signal_handlers import SignalHandlers
16
17
  from chia.server.start_service import RpcInfo, Service, async_run
17
18
  from chia.timelord.timelord import Timelord
18
19
  from chia.timelord.timelord_api import TimelordAPI
19
- from chia.types.aliases import TimelordService
20
+ from chia.timelord.timelord_rpc_api import TimelordRpcApi
20
21
  from chia.util.chia_logging import initialize_service_logging
21
- from chia.util.config import get_unresolved_peer_infos, load_config, load_config_cli
22
+ from chia.util.config import load_config, load_config_cli
22
23
  from chia.util.default_root import resolve_root_path
23
24
  from chia.util.task_timing import maybe_manage_task_instrumentation
24
25
 
@@ -38,6 +39,7 @@ def create_timelord_service(
38
39
 
39
40
  network_id = service_config["selected_network"]
40
41
  overrides = service_config["network_overrides"]["constants"][network_id]
42
+ update_testnet_overrides(network_id, overrides)
41
43
  updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
42
44
 
43
45
  node = Timelord(root_path, service_config, updated_constants)
@@ -10,14 +10,14 @@ from chia_rs import ConsensusConstants
10
10
 
11
11
  from chia.apis import ApiProtocolRegistry
12
12
  from chia.consensus.constants import replace_str_to_bytes
13
- from chia.consensus.default_constants import DEFAULT_CONSTANTS
14
- from chia.rpc.wallet_rpc_api import WalletRpcApi
15
- from chia.server.outbound_message import NodeType
13
+ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
14
+ from chia.protocols.outbound_message import NodeType
15
+ from chia.server.aliases import WalletService
16
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos
16
17
  from chia.server.signal_handlers import SignalHandlers
17
18
  from chia.server.start_service import RpcInfo, Service, async_run
18
- from chia.types.aliases import WalletService
19
19
  from chia.util.chia_logging import initialize_service_logging
20
- from chia.util.config import get_unresolved_peer_infos, load_config, load_config_cli
20
+ from chia.util.config import load_config, load_config_cli
21
21
  from chia.util.default_root import resolve_root_path
22
22
  from chia.util.keychain import Keychain
23
23
  from chia.util.task_timing import maybe_manage_task_instrumentation
@@ -25,6 +25,7 @@ from chia.wallet.wallet_node import WalletNode
25
25
 
26
26
  # See: https://bugs.python.org/issue29288
27
27
  from chia.wallet.wallet_node_api import WalletNodeAPI
28
+ from chia.wallet.wallet_rpc_api import WalletRpcApi
28
29
 
29
30
  "".encode("idna")
30
31
 
@@ -42,6 +43,7 @@ def create_wallet_service(
42
43
 
43
44
  network_id = service_config["selected_network"]
44
45
  overrides = service_config["network_overrides"]["constants"][network_id]
46
+ update_testnet_overrides(network_id, overrides)
45
47
  updated_constants = replace_str_to_bytes(consensus_constants, **overrides)
46
48
  service_config.setdefault("short_sync_blocks_behind_threshold", 20)
47
49
 
@@ -18,6 +18,7 @@ from packaging.version import Version
18
18
  from typing_extensions import Protocol, final
19
19
 
20
20
  from chia import __version__
21
+ from chia.protocols.outbound_message import Message, NodeType, make_msg
21
22
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
22
23
  from chia.protocols.protocol_state_machine import message_response_ok
23
24
  from chia.protocols.protocol_timing import (
@@ -29,7 +30,6 @@ from chia.protocols.protocol_timing import (
29
30
  from chia.protocols.shared_protocol import Capability, Error, Handshake, protocol_version
30
31
  from chia.server.api_protocol import ApiMetadata, ApiProtocol
31
32
  from chia.server.capabilities import known_active_capabilities
32
- from chia.server.outbound_message import Message, NodeType, make_msg
33
33
  from chia.server.rate_limits import RateLimiter
34
34
  from chia.types.peer_info import PeerInfo
35
35
  from chia.util.errors import ApiError, ConsensusError, Err, ProtocolError, TimestampError
@@ -2,15 +2,15 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Optional
4
4
 
5
+ from chia_rs import FullBlock
5
6
  from chia_rs.sized_ints import uint32
6
7
 
8
+ from chia.consensus.augmented_chain import AugmentedBlockchain
7
9
  from chia.consensus.block_body_validation import ForkInfo
8
10
  from chia.consensus.difficulty_adjustment import get_next_sub_slot_iters_and_difficulty
9
11
  from chia.full_node.full_node import FullNode, PeakPostProcessingResult
10
- from chia.types.full_block import FullBlock
11
12
  from chia.types.peer_info import PeerInfo
12
13
  from chia.types.validation_state import ValidationState
13
- from chia.util.augmented_chain import AugmentedBlockchain
14
14
  from chia.util.batches import to_batches
15
15
 
16
16