chia-blockchain 2.5.7rc4__py3-none-any.whl → 2.6.0rc2__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 (531) hide show
  1. chia/__init__.py +8 -4
  2. chia/_tests/blockchain/blockchain_test_utils.py +6 -8
  3. chia/_tests/blockchain/test_augmented_chain.py +4 -4
  4. chia/_tests/blockchain/test_blockchain.py +165 -190
  5. chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
  6. chia/_tests/blockchain/test_build_chains.py +2 -4
  7. chia/_tests/blockchain/test_get_block_generator.py +2 -3
  8. chia/_tests/clvm/coin_store.py +4 -7
  9. chia/_tests/clvm/test_clvm_step.py +4 -4
  10. chia/_tests/clvm/test_puzzle_compression.py +2 -1
  11. chia/_tests/clvm/test_puzzle_drivers.py +2 -2
  12. chia/_tests/clvm/test_singletons.py +2 -4
  13. chia/_tests/clvm/test_spend_sim.py +2 -2
  14. chia/_tests/cmds/cmd_test_utils.py +27 -45
  15. chia/_tests/cmds/test_cmd_framework.py +6 -6
  16. chia/_tests/cmds/test_daemon.py +3 -3
  17. chia/_tests/cmds/test_show.py +4 -4
  18. chia/_tests/cmds/test_tx_config_args.py +1 -2
  19. chia/_tests/cmds/testing_classes.py +4 -5
  20. chia/_tests/cmds/wallet/test_did.py +24 -27
  21. chia/_tests/cmds/wallet/test_nft.py +12 -10
  22. chia/_tests/cmds/wallet/test_vcs.py +11 -12
  23. chia/_tests/cmds/wallet/test_wallet.py +134 -89
  24. chia/_tests/conftest.py +66 -31
  25. chia/_tests/connection_utils.py +2 -2
  26. chia/_tests/core/cmds/test_beta.py +4 -4
  27. chia/_tests/core/cmds/test_keys.py +2 -3
  28. chia/_tests/core/cmds/test_wallet.py +15 -15
  29. chia/_tests/core/consensus/test_pot_iterations.py +19 -73
  30. chia/_tests/core/custom_types/test_proof_of_space.py +124 -98
  31. chia/_tests/core/daemon/test_daemon.py +11 -11
  32. chia/_tests/core/data_layer/conftest.py +2 -2
  33. chia/_tests/core/data_layer/test_data_rpc.py +28 -14
  34. chia/_tests/core/data_layer/test_data_store.py +10 -10
  35. chia/_tests/core/data_layer/util.py +11 -11
  36. chia/_tests/core/farmer/test_farmer_api.py +2 -4
  37. chia/_tests/core/full_node/full_sync/test_full_sync.py +8 -7
  38. chia/_tests/core/full_node/stores/test_block_store.py +5 -4
  39. chia/_tests/core/full_node/stores/test_coin_store.py +5 -11
  40. chia/_tests/core/full_node/stores/test_full_node_store.py +8 -8
  41. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  42. chia/_tests/core/full_node/test_block_height_map.py +3 -4
  43. chia/_tests/core/full_node/test_conditions.py +21 -23
  44. chia/_tests/core/full_node/test_full_node.py +273 -70
  45. chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
  46. chia/_tests/core/full_node/test_hint_management.py +2 -4
  47. chia/_tests/core/full_node/test_performance.py +0 -1
  48. chia/_tests/core/full_node/test_prev_tx_block.py +88 -11
  49. chia/_tests/core/full_node/test_transactions.py +1 -2
  50. chia/_tests/core/full_node/test_tx_processing_queue.py +198 -30
  51. chia/_tests/core/mempool/test_mempool.py +54 -50
  52. chia/_tests/core/mempool/test_mempool_fee_estimator.py +39 -39
  53. chia/_tests/core/mempool/test_mempool_fee_protocol.py +2 -6
  54. chia/_tests/core/mempool/test_mempool_manager.py +988 -854
  55. chia/_tests/core/mempool/test_singleton_fast_forward.py +6 -6
  56. chia/_tests/core/server/serve.py +7 -7
  57. chia/_tests/core/server/test_dos.py +1 -2
  58. chia/_tests/core/server/test_event_loop.py +12 -4
  59. chia/_tests/core/server/test_loop.py +7 -8
  60. chia/_tests/core/server/test_rate_limits.py +9 -8
  61. chia/_tests/core/server/test_server.py +61 -1
  62. chia/_tests/core/services/test_services.py +2 -2
  63. chia/_tests/core/ssl/test_ssl.py +2 -2
  64. chia/_tests/core/test_cost_calculation.py +2 -6
  65. chia/_tests/core/test_farmer_harvester_rpc.py +3 -5
  66. chia/_tests/core/test_filter.py +0 -1
  67. chia/_tests/core/test_full_node_rpc.py +2 -2
  68. chia/_tests/core/test_merkle_set.py +1 -2
  69. chia/_tests/core/test_seeder.py +4 -4
  70. chia/_tests/core/util/test_config.py +4 -4
  71. chia/_tests/core/util/test_jsonify.py +2 -2
  72. chia/_tests/core/util/test_keychain.py +3 -3
  73. chia/_tests/core/util/test_lockfile.py +2 -1
  74. chia/_tests/core/util/test_log_exceptions.py +1 -2
  75. chia/_tests/core/util/test_streamable.py +17 -17
  76. chia/_tests/db/test_db_wrapper.py +3 -2
  77. chia/_tests/environments/wallet.py +14 -14
  78. chia/_tests/ether.py +4 -3
  79. chia/_tests/farmer_harvester/test_farmer.py +41 -24
  80. chia/_tests/farmer_harvester/test_farmer_harvester.py +50 -17
  81. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +27 -27
  82. chia/_tests/farmer_harvester/test_third_party_harvesters.py +21 -22
  83. chia/_tests/fee_estimation/test_fee_estimation_integration.py +18 -18
  84. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +11 -9
  85. chia/_tests/harvester/test_harvester_api.py +11 -4
  86. chia/_tests/plot_sync/test_plot_sync.py +13 -11
  87. chia/_tests/plot_sync/test_receiver.py +11 -10
  88. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  89. chia/_tests/plot_sync/util.py +1 -2
  90. chia/_tests/plotting/test_plot_manager.py +7 -6
  91. chia/_tests/plotting/test_prover.py +30 -38
  92. chia/_tests/pools/test_pool_cmdline.py +4 -6
  93. chia/_tests/pools/test_pool_rpc.py +203 -61
  94. chia/_tests/pools/test_pool_wallet.py +3 -3
  95. chia/_tests/pools/test_wallet_pool_store.py +1 -4
  96. chia/_tests/process_junit.py +2 -2
  97. chia/_tests/rpc/test_rpc_client.py +4 -4
  98. chia/_tests/rpc/test_rpc_server.py +3 -3
  99. chia/_tests/simulation/test_simulation.py +12 -25
  100. chia/_tests/solver/test_solver_service.py +13 -4
  101. chia/_tests/testconfig.py +2 -2
  102. chia/_tests/timelord/test_new_peak.py +22 -11
  103. chia/_tests/tools/test_run_block.py +0 -2
  104. chia/_tests/tools/test_virtual_project.py +2 -1
  105. chia/_tests/util/benchmarks.py +1 -0
  106. chia/_tests/util/blockchain.py +38 -36
  107. chia/_tests/util/blockchain_mock.py +11 -11
  108. chia/_tests/util/build_network_protocol_files.py +2 -1
  109. chia/_tests/util/coin_store.py +2 -1
  110. chia/_tests/util/config.py +1 -1
  111. chia/_tests/util/db_connection.py +2 -3
  112. chia/_tests/util/full_sync.py +9 -11
  113. chia/_tests/util/gen_ssl_certs.py +4 -5
  114. chia/_tests/util/get_name_puzzle_conditions.py +2 -0
  115. chia/_tests/util/misc.py +24 -24
  116. chia/_tests/util/network_protocol_data.py +20 -3
  117. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  118. chia/_tests/util/protocol_messages_json.py +292 -3
  119. chia/_tests/util/setup_nodes.py +62 -47
  120. chia/_tests/util/spend_sim.py +57 -57
  121. chia/_tests/util/test_async_pool.py +2 -3
  122. chia/_tests/util/test_chia_version.py +1 -3
  123. chia/_tests/util/test_config.py +3 -3
  124. chia/_tests/util/test_full_block_utils.py +6 -3
  125. chia/_tests/util/test_limited_semaphore.py +1 -2
  126. chia/_tests/util/test_misc.py +2 -2
  127. chia/_tests/util/test_network.py +1 -2
  128. chia/_tests/util/test_priority_mutex.py +3 -3
  129. chia/_tests/util/test_recursive_replace.py +5 -6
  130. chia/_tests/util/test_replace_str_to_bytes.py +9 -10
  131. chia/_tests/util/test_testnet_overrides.py +3 -3
  132. chia/_tests/util/time_out_assert.py +2 -2
  133. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +4 -6
  134. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -4
  135. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +19 -13
  136. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +13 -13
  137. chia/_tests/wallet/cat_wallet/test_trades.py +40 -38
  138. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -4
  139. chia/_tests/wallet/conftest.py +6 -6
  140. chia/_tests/wallet/db_wallet/test_db_graftroot.py +1 -1
  141. chia/_tests/wallet/db_wallet/test_dl_offers.py +34 -34
  142. chia/_tests/wallet/did_wallet/test_did.py +16 -6
  143. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +21 -21
  144. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +20 -6
  145. chia/_tests/wallet/nft_wallet/test_nft_offers.py +19 -21
  146. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +1 -2
  147. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +121 -2
  148. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +6 -9
  149. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +44 -1
  150. chia/_tests/wallet/rpc/test_wallet_rpc.py +1672 -896
  151. chia/_tests/wallet/sync/test_wallet_sync.py +63 -60
  152. chia/_tests/wallet/test_clvm_streamable.py +2 -3
  153. chia/_tests/wallet/test_coin_management.py +2 -2
  154. chia/_tests/wallet/test_conditions.py +45 -51
  155. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  156. chia/_tests/wallet/test_new_wallet_protocol.py +17 -17
  157. chia/_tests/wallet/test_notifications.py +14 -14
  158. chia/_tests/wallet/test_signer_protocol.py +5 -5
  159. chia/_tests/wallet/test_singleton_lifecycle_fast.py +4 -3
  160. chia/_tests/wallet/test_transaction_store.py +20 -20
  161. chia/_tests/wallet/test_util.py +2 -2
  162. chia/_tests/wallet/test_wallet.py +380 -228
  163. chia/_tests/wallet/test_wallet_action_scope.py +4 -4
  164. chia/_tests/wallet/test_wallet_blockchain.py +12 -12
  165. chia/_tests/wallet/test_wallet_coin_store.py +3 -4
  166. chia/_tests/wallet/test_wallet_node.py +16 -15
  167. chia/_tests/wallet/test_wallet_test_framework.py +2 -1
  168. chia/_tests/wallet/test_wallet_utils.py +2 -3
  169. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -5
  170. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +14 -15
  171. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -24
  172. chia/_tests/wallet/wallet_block_tools.py +12 -11
  173. chia/_tests/weight_proof/config.py +1 -0
  174. chia/_tests/weight_proof/test_weight_proof.py +5 -4
  175. chia/apis/__init__.py +21 -0
  176. chia/apis/farmer_stub.py +102 -0
  177. chia/apis/full_node_stub.py +374 -0
  178. chia/apis/harvester_stub.py +57 -0
  179. chia/apis/introducer_stub.py +35 -0
  180. chia/apis/solver_stub.py +30 -0
  181. chia/apis/stub_protocol_registry.py +21 -0
  182. chia/apis/timelord_stub.py +39 -0
  183. chia/apis/wallet_stub.py +161 -0
  184. chia/cmds/beta.py +3 -4
  185. chia/cmds/beta_funcs.py +4 -3
  186. chia/cmds/check_wallet_db.py +4 -4
  187. chia/cmds/chia.py +1 -2
  188. chia/cmds/cmd_classes.py +11 -13
  189. chia/cmds/cmd_helpers.py +11 -11
  190. chia/cmds/cmds_util.py +15 -15
  191. chia/cmds/coin_funcs.py +6 -7
  192. chia/cmds/coins.py +2 -3
  193. chia/cmds/configure.py +1 -2
  194. chia/cmds/data.py +42 -42
  195. chia/cmds/data_funcs.py +81 -81
  196. chia/cmds/db.py +4 -5
  197. chia/cmds/db_backup_func.py +2 -2
  198. chia/cmds/db_upgrade_func.py +3 -3
  199. chia/cmds/db_validate_func.py +2 -2
  200. chia/cmds/dev/data.py +4 -4
  201. chia/cmds/dev/gh.py +5 -5
  202. chia/cmds/dev/installers.py +2 -3
  203. chia/cmds/dev/mempool.py +3 -4
  204. chia/cmds/dev/mempool_funcs.py +4 -4
  205. chia/cmds/dev/sim.py +8 -8
  206. chia/cmds/dump_keyring.py +3 -3
  207. chia/cmds/farm.py +6 -8
  208. chia/cmds/farm_funcs.py +25 -24
  209. chia/cmds/init_funcs.py +4 -4
  210. chia/cmds/keys.py +16 -18
  211. chia/cmds/keys_funcs.py +36 -36
  212. chia/cmds/netspace.py +1 -3
  213. chia/cmds/netspace_funcs.py +1 -2
  214. chia/cmds/options.py +3 -2
  215. chia/cmds/param_types.py +17 -16
  216. chia/cmds/passphrase.py +6 -7
  217. chia/cmds/passphrase_funcs.py +11 -13
  218. chia/cmds/peer.py +1 -3
  219. chia/cmds/peer_funcs.py +3 -3
  220. chia/cmds/plotnft.py +6 -7
  221. chia/cmds/plotnft_funcs.py +37 -26
  222. chia/cmds/rpc.py +3 -3
  223. chia/cmds/show.py +3 -5
  224. chia/cmds/show_funcs.py +9 -9
  225. chia/cmds/sim_funcs.py +25 -26
  226. chia/cmds/solver.py +1 -3
  227. chia/cmds/solver_funcs.py +1 -2
  228. chia/cmds/start_funcs.py +2 -2
  229. chia/cmds/wallet.py +76 -81
  230. chia/cmds/wallet_funcs.py +206 -177
  231. chia/consensus/augmented_chain.py +6 -6
  232. chia/consensus/block_body_validation.py +19 -15
  233. chia/consensus/block_creation.py +25 -21
  234. chia/consensus/block_header_validation.py +27 -13
  235. chia/consensus/block_height_map.py +3 -6
  236. chia/consensus/block_height_map_protocol.py +2 -2
  237. chia/consensus/block_record.py +2 -4
  238. chia/consensus/blockchain.py +58 -40
  239. chia/consensus/blockchain_interface.py +7 -7
  240. chia/consensus/coin_store_protocol.py +5 -6
  241. chia/consensus/condition_tools.py +4 -4
  242. chia/consensus/cost_calculator.py +2 -3
  243. chia/consensus/default_constants.py +19 -13
  244. chia/consensus/deficit.py +1 -3
  245. chia/consensus/difficulty_adjustment.py +3 -5
  246. chia/consensus/find_fork_point.py +2 -4
  247. chia/consensus/full_block_to_block_record.py +11 -13
  248. chia/consensus/generator_tools.py +2 -3
  249. chia/consensus/get_block_challenge.py +50 -26
  250. chia/consensus/get_block_generator.py +2 -3
  251. chia/consensus/make_sub_epoch_summary.py +8 -7
  252. chia/consensus/multiprocess_validation.py +31 -20
  253. chia/consensus/pos_quality.py +6 -23
  254. chia/consensus/pot_iterations.py +17 -44
  255. chia/consensus/signage_point.py +4 -5
  256. chia/consensus/vdf_info_computation.py +2 -4
  257. chia/daemon/client.py +8 -8
  258. chia/daemon/keychain_proxy.py +31 -37
  259. chia/daemon/server.py +32 -33
  260. chia/daemon/windows_signal.py +4 -3
  261. chia/data_layer/data_layer.py +86 -77
  262. chia/data_layer/data_layer_rpc_api.py +9 -9
  263. chia/data_layer/data_layer_rpc_client.py +13 -15
  264. chia/data_layer/data_layer_server.py +3 -3
  265. chia/data_layer/data_layer_util.py +14 -14
  266. chia/data_layer/data_layer_wallet.py +94 -101
  267. chia/data_layer/data_store.py +50 -50
  268. chia/data_layer/dl_wallet_store.py +9 -12
  269. chia/data_layer/download_data.py +8 -9
  270. chia/data_layer/s3_plugin_service.py +5 -9
  271. chia/data_layer/start_data_layer.py +5 -5
  272. chia/farmer/farmer.py +31 -31
  273. chia/farmer/farmer_api.py +45 -33
  274. chia/farmer/farmer_rpc_api.py +5 -4
  275. chia/farmer/farmer_rpc_client.py +6 -6
  276. chia/farmer/start_farmer.py +6 -6
  277. chia/full_node/block_store.py +13 -16
  278. chia/full_node/check_fork_next_block.py +1 -2
  279. chia/full_node/coin_store.py +15 -16
  280. chia/full_node/eligible_coin_spends.py +3 -3
  281. chia/full_node/fee_estimate_store.py +2 -3
  282. chia/full_node/fee_tracker.py +1 -2
  283. chia/full_node/full_block_utils.py +4 -4
  284. chia/full_node/full_node.py +239 -223
  285. chia/full_node/full_node_api.py +197 -152
  286. chia/full_node/full_node_rpc_api.py +34 -32
  287. chia/full_node/full_node_rpc_client.py +18 -19
  288. chia/full_node/full_node_store.py +45 -43
  289. chia/full_node/hard_fork_utils.py +44 -0
  290. chia/full_node/hint_management.py +2 -2
  291. chia/full_node/mempool.py +17 -19
  292. chia/full_node/mempool_manager.py +89 -42
  293. chia/full_node/pending_tx_cache.py +2 -3
  294. chia/full_node/start_full_node.py +5 -5
  295. chia/full_node/sync_store.py +3 -4
  296. chia/full_node/tx_processing_queue.py +120 -36
  297. chia/full_node/weight_proof.py +61 -48
  298. chia/harvester/harvester.py +25 -24
  299. chia/harvester/harvester_api.py +61 -38
  300. chia/harvester/harvester_rpc_api.py +10 -10
  301. chia/harvester/start_harvester.py +4 -4
  302. chia/introducer/introducer.py +3 -3
  303. chia/introducer/introducer_api.py +6 -4
  304. chia/introducer/start_introducer.py +4 -4
  305. chia/legacy/keyring.py +3 -3
  306. chia/plot_sync/delta.py +1 -2
  307. chia/plot_sync/receiver.py +20 -17
  308. chia/plot_sync/sender.py +15 -10
  309. chia/plotters/bladebit.py +7 -7
  310. chia/plotters/chiapos.py +2 -2
  311. chia/plotters/madmax.py +4 -4
  312. chia/plotters/plotters.py +4 -4
  313. chia/plotters/plotters_util.py +3 -3
  314. chia/plotting/cache.py +20 -14
  315. chia/plotting/check_plots.py +26 -35
  316. chia/plotting/create_plots.py +22 -23
  317. chia/plotting/manager.py +21 -14
  318. chia/plotting/prover.py +59 -42
  319. chia/plotting/util.py +16 -16
  320. chia/pools/pool_config.py +2 -1
  321. chia/pools/pool_puzzles.py +11 -12
  322. chia/pools/pool_wallet.py +34 -57
  323. chia/pools/pool_wallet_info.py +39 -10
  324. chia/protocols/farmer_protocol.py +8 -9
  325. chia/protocols/fee_estimate.py +3 -4
  326. chia/protocols/full_node_protocol.py +3 -4
  327. chia/protocols/harvester_protocol.py +27 -15
  328. chia/protocols/outbound_message.py +3 -3
  329. chia/protocols/pool_protocol.py +8 -9
  330. chia/protocols/shared_protocol.py +1 -2
  331. chia/protocols/solver_protocol.py +9 -2
  332. chia/protocols/timelord_protocol.py +4 -7
  333. chia/protocols/wallet_protocol.py +11 -12
  334. chia/rpc/rpc_client.py +9 -9
  335. chia/rpc/rpc_server.py +17 -17
  336. chia/rpc/util.py +2 -2
  337. chia/seeder/crawler.py +8 -8
  338. chia/seeder/crawler_api.py +21 -27
  339. chia/seeder/crawler_rpc_api.py +2 -2
  340. chia/seeder/dns_server.py +21 -21
  341. chia/seeder/start_crawler.py +4 -4
  342. chia/server/address_manager.py +15 -16
  343. chia/server/api_protocol.py +11 -11
  344. chia/server/chia_policy.py +46 -26
  345. chia/server/introducer_peers.py +2 -3
  346. chia/server/node_discovery.py +19 -19
  347. chia/server/rate_limit_numbers.py +4 -5
  348. chia/server/rate_limits.py +4 -4
  349. chia/server/resolve_peer_info.py +4 -4
  350. chia/server/server.py +49 -52
  351. chia/server/signal_handlers.py +6 -6
  352. chia/server/start_service.py +17 -17
  353. chia/server/upnp.py +4 -6
  354. chia/server/ws_connection.py +52 -37
  355. chia/simulator/add_blocks_in_batches.py +1 -3
  356. chia/simulator/block_tools.py +312 -200
  357. chia/simulator/full_node_simulator.py +56 -35
  358. chia/simulator/keyring.py +2 -3
  359. chia/simulator/setup_services.py +15 -15
  360. chia/simulator/simulator_full_node_rpc_api.py +1 -2
  361. chia/simulator/simulator_full_node_rpc_client.py +1 -2
  362. chia/simulator/simulator_protocol.py +1 -2
  363. chia/simulator/simulator_test_tools.py +3 -3
  364. chia/simulator/start_simulator.py +7 -7
  365. chia/simulator/wallet_tools.py +10 -10
  366. chia/solver/solver.py +10 -10
  367. chia/solver/solver_api.py +10 -8
  368. chia/solver/solver_rpc_api.py +2 -2
  369. chia/solver/start_solver.py +4 -4
  370. chia/ssl/cacert.pem +148 -90
  371. chia/ssl/chia_ca.crt +14 -10
  372. chia/ssl/chia_ca_old.crt +19 -0
  373. chia/ssl/create_ssl.py +4 -4
  374. chia/ssl/renewedselfsignedca.conf +4 -0
  375. chia/ssl/ssl_check.py +1 -2
  376. chia/timelord/iters_from_block.py +1 -4
  377. chia/timelord/start_timelord.py +4 -4
  378. chia/timelord/timelord.py +44 -40
  379. chia/timelord/timelord_api.py +6 -4
  380. chia/timelord/timelord_launcher.py +2 -2
  381. chia/timelord/timelord_rpc_api.py +2 -2
  382. chia/timelord/timelord_state.py +11 -12
  383. chia/types/block_protocol.py +1 -3
  384. chia/types/blockchain_format/coin.py +1 -3
  385. chia/types/blockchain_format/program.py +11 -8
  386. chia/types/blockchain_format/proof_of_space.py +123 -76
  387. chia/types/blockchain_format/tree_hash.py +3 -3
  388. chia/types/blockchain_format/vdf.py +1 -2
  389. chia/types/coin_spend.py +3 -3
  390. chia/types/mempool_item.py +5 -5
  391. chia/types/mempool_submission_status.py +2 -3
  392. chia/types/peer_info.py +1 -2
  393. chia/types/unfinished_header_block.py +3 -4
  394. chia/types/validation_state.py +1 -2
  395. chia/util/action_scope.py +8 -8
  396. chia/util/async_pool.py +5 -5
  397. chia/util/bech32m.py +1 -2
  398. chia/util/beta_metrics.py +2 -2
  399. chia/util/block_cache.py +4 -4
  400. chia/util/chia_logging.py +2 -2
  401. chia/util/chia_version.py +1 -2
  402. chia/util/config.py +15 -16
  403. chia/util/db_wrapper.py +26 -27
  404. chia/util/default_root.py +1 -2
  405. chia/util/errors.py +3 -3
  406. chia/util/file_keyring.py +14 -14
  407. chia/util/files.py +2 -3
  408. chia/util/hash.py +4 -4
  409. chia/util/initial-config.yaml +4 -5
  410. chia/util/inline_executor.py +2 -1
  411. chia/util/ip_address.py +1 -2
  412. chia/util/keychain.py +25 -27
  413. chia/util/keyring_wrapper.py +18 -19
  414. chia/util/lock.py +3 -4
  415. chia/util/log_exceptions.py +1 -2
  416. chia/util/lru_cache.py +2 -2
  417. chia/util/network.py +6 -6
  418. chia/util/path.py +2 -3
  419. chia/util/priority_mutex.py +2 -2
  420. chia/util/profiler.py +1 -2
  421. chia/util/safe_cancel_task.py +1 -2
  422. chia/util/streamable.py +24 -10
  423. chia/util/task_referencer.py +1 -1
  424. chia/util/timing.py +3 -3
  425. chia/util/virtual_project_analysis.py +6 -5
  426. chia/util/ws_message.py +2 -2
  427. chia/wallet/cat_wallet/cat_info.py +3 -4
  428. chia/wallet/cat_wallet/cat_outer_puzzle.py +12 -11
  429. chia/wallet/cat_wallet/cat_utils.py +3 -4
  430. chia/wallet/cat_wallet/cat_wallet.py +61 -83
  431. chia/wallet/cat_wallet/lineage_store.py +3 -4
  432. chia/wallet/cat_wallet/r_cat_wallet.py +19 -22
  433. chia/wallet/coin_selection.py +9 -10
  434. chia/wallet/conditions.py +142 -106
  435. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -5
  436. chia/wallet/derivation_record.py +1 -2
  437. chia/wallet/derive_keys.py +2 -4
  438. chia/wallet/did_wallet/did_info.py +10 -11
  439. chia/wallet/did_wallet/did_wallet.py +36 -82
  440. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -8
  441. chia/wallet/driver_protocol.py +5 -7
  442. chia/wallet/lineage_proof.py +4 -4
  443. chia/wallet/nft_wallet/metadata_outer_puzzle.py +11 -11
  444. chia/wallet/nft_wallet/nft_info.py +8 -9
  445. chia/wallet/nft_wallet/nft_puzzle_utils.py +8 -8
  446. chia/wallet/nft_wallet/nft_wallet.py +79 -116
  447. chia/wallet/nft_wallet/ownership_outer_puzzle.py +14 -14
  448. chia/wallet/nft_wallet/singleton_outer_puzzle.py +12 -11
  449. chia/wallet/nft_wallet/transfer_program_puzzle.py +11 -11
  450. chia/wallet/nft_wallet/uncurry_nft.py +10 -11
  451. chia/wallet/notification_manager.py +3 -3
  452. chia/wallet/notification_store.py +44 -61
  453. chia/wallet/outer_puzzles.py +6 -7
  454. chia/wallet/puzzle_drivers.py +34 -6
  455. chia/wallet/puzzles/clawback/drivers.py +6 -6
  456. chia/wallet/puzzles/deployed_puzzle_hashes.json +1 -54
  457. chia/wallet/puzzles/load_clvm.py +1 -1
  458. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -2
  459. chia/wallet/puzzles/singleton_top_layer.py +2 -3
  460. chia/wallet/puzzles/singleton_top_layer_v1_1.py +3 -4
  461. chia/wallet/puzzles/tails.py +3 -3
  462. chia/wallet/singleton.py +5 -7
  463. chia/wallet/singleton_record.py +3 -3
  464. chia/wallet/start_wallet.py +5 -5
  465. chia/wallet/trade_manager.py +37 -58
  466. chia/wallet/trade_record.py +4 -4
  467. chia/wallet/trading/offer.py +59 -46
  468. chia/wallet/trading/trade_store.py +8 -9
  469. chia/wallet/transaction_record.py +8 -8
  470. chia/wallet/uncurried_puzzle.py +1 -2
  471. chia/wallet/util/clvm_streamable.py +12 -12
  472. chia/wallet/util/compute_hints.py +4 -5
  473. chia/wallet/util/curry_and_treehash.py +1 -2
  474. chia/wallet/util/merkle_tree.py +2 -3
  475. chia/wallet/util/peer_request_cache.py +8 -8
  476. chia/wallet/util/signing.py +85 -0
  477. chia/wallet/util/tx_config.py +15 -6
  478. chia/wallet/util/wallet_sync_utils.py +14 -16
  479. chia/wallet/util/wallet_types.py +2 -2
  480. chia/wallet/vc_wallet/cr_cat_drivers.py +10 -11
  481. chia/wallet/vc_wallet/cr_cat_wallet.py +50 -68
  482. chia/wallet/vc_wallet/cr_outer_puzzle.py +14 -13
  483. chia/wallet/vc_wallet/vc_drivers.py +27 -27
  484. chia/wallet/vc_wallet/vc_store.py +5 -6
  485. chia/wallet/vc_wallet/vc_wallet.py +33 -61
  486. chia/wallet/wallet.py +50 -78
  487. chia/wallet/wallet_action_scope.py +11 -11
  488. chia/wallet/wallet_blockchain.py +12 -12
  489. chia/wallet/wallet_coin_record.py +12 -6
  490. chia/wallet/wallet_coin_store.py +24 -25
  491. chia/wallet/wallet_interested_store.py +3 -5
  492. chia/wallet/wallet_nft_store.py +10 -11
  493. chia/wallet/wallet_node.py +53 -61
  494. chia/wallet/wallet_node_api.py +5 -3
  495. chia/wallet/wallet_protocol.py +23 -23
  496. chia/wallet/wallet_puzzle_store.py +15 -18
  497. chia/wallet/wallet_request_types.py +778 -114
  498. chia/wallet/wallet_retry_store.py +1 -3
  499. chia/wallet/wallet_rpc_api.py +572 -909
  500. chia/wallet/wallet_rpc_client.py +87 -279
  501. chia/wallet/wallet_singleton_store.py +3 -4
  502. chia/wallet/wallet_state_manager.py +332 -106
  503. chia/wallet/wallet_transaction_store.py +11 -14
  504. chia/wallet/wallet_user_store.py +4 -6
  505. chia/wallet/wallet_weight_proof_handler.py +4 -4
  506. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +6 -5
  507. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +510 -517
  508. chia/apis.py +0 -21
  509. chia/consensus/check_time_locks.py +0 -57
  510. chia/data_layer/puzzles/__init__.py +0 -0
  511. chia/data_layer/puzzles/graftroot_dl_offers.clsp +0 -100
  512. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +0 -1
  513. chia/types/coin_record.py +0 -44
  514. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  515. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +0 -6
  516. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +0 -1
  517. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +0 -6
  518. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +0 -1
  519. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +0 -30
  520. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +0 -1
  521. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +0 -28
  522. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +0 -1
  523. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +0 -100
  524. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +0 -1
  525. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +0 -78
  526. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +0 -1
  527. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +0 -74
  528. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +0 -1
  529. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
  530. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
  531. {chia_blockchain-2.5.7rc4.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import time
4
- from typing import Any, Optional
4
+ from typing import Any
5
5
 
6
6
  from chia_rs import (
7
7
  BlockRecord,
@@ -58,12 +58,12 @@ class WalletBlockTools(BlockTools):
58
58
  def get_consecutive_blocks(
59
59
  self,
60
60
  num_blocks: int,
61
- block_list_input: Optional[list[FullBlock]] = None,
61
+ block_list_input: list[FullBlock] | None = None,
62
62
  *,
63
- farmer_reward_puzzle_hash: Optional[bytes32] = None,
64
- pool_reward_puzzle_hash: Optional[bytes32] = None,
65
- transaction_data: Optional[SpendBundle] = None,
66
- genesis_timestamp: Optional[uint64] = None,
63
+ farmer_reward_puzzle_hash: bytes32 | None = None,
64
+ pool_reward_puzzle_hash: bytes32 | None = None,
65
+ transaction_data: SpendBundle | None = None,
66
+ genesis_timestamp: uint64 | None = None,
67
67
  **kwargs: Any, # We're overriding so there's many arguments no longer used.
68
68
  ) -> list[FullBlock]:
69
69
  assert num_blocks > 0
@@ -86,7 +86,7 @@ class WalletBlockTools(BlockTools):
86
86
  height_to_hash, _, blocks = load_block_list(block_list_input, constants)
87
87
 
88
88
  if len(block_list_input) > 0:
89
- latest_block: Optional[BlockRecord] = blocks[block_list_input[-1].header_hash]
89
+ latest_block: BlockRecord | None = blocks[block_list_input[-1].header_hash]
90
90
  assert latest_block is not None
91
91
  assert latest_block.timestamp is not None
92
92
  last_timestamp = latest_block.timestamp
@@ -97,7 +97,7 @@ class WalletBlockTools(BlockTools):
97
97
  for _ in range(num_blocks):
98
98
  additions = []
99
99
  removals = []
100
- block_generator: Optional[BlockGenerator] = None
100
+ block_generator: BlockGenerator | None = None
101
101
  if transaction_data is not None and len(block_list_input) > 0:
102
102
  additions = compute_additions_unchecked(transaction_data)
103
103
  removals = transaction_data.removals()
@@ -161,7 +161,7 @@ def load_block_list(
161
161
  def finish_block(
162
162
  constants: ConsensusConstants,
163
163
  unfinished_block: UnfinishedBlock,
164
- prev_block: Optional[BlockRecord],
164
+ prev_block: BlockRecord | None,
165
165
  blocks: dict[bytes32, BlockRecord],
166
166
  ) -> tuple[FullBlock, BlockRecord]:
167
167
  if prev_block is None:
@@ -187,6 +187,7 @@ def finish_block(
187
187
  G2Element(),
188
188
  DEFAULT_VDF_INFO,
189
189
  DEFAULT_VDF_INFO,
190
+ None, # header_mmr_root
190
191
  prev_block is not None,
191
192
  ),
192
193
  DEFAULT_VDF_PROOF,
@@ -211,8 +212,8 @@ def get_full_block_and_block_record(
211
212
  last_timestamp: uint64,
212
213
  farmer_reward_puzzlehash: bytes32,
213
214
  pool_target: PoolTarget,
214
- prev_block: Optional[BlockRecord],
215
- block_generator: Optional[BlockGenerator],
215
+ prev_block: BlockRecord | None,
216
+ block_generator: BlockGenerator | None,
216
217
  additions: list[Coin],
217
218
  removals: list[Coin],
218
219
  ) -> tuple[FullBlock, BlockRecord, float]:
@@ -1,3 +1,4 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  checkout_blocks_and_plots = True
4
+ job_timeout = 45
@@ -47,7 +47,6 @@ async def load_blocks_dont_validate(
47
47
  cc_sp,
48
48
  block.height,
49
49
  difficulty,
50
- sub_slot_iters,
51
50
  uint32(0), # prev_tx_block(blocks, prev_b), todo need to get height of prev tx block somehow here
52
51
  )
53
52
  assert required_iters is not None
@@ -99,15 +98,17 @@ async def _test_map_summaries(
99
98
 
100
99
 
101
100
  class TestWeightProof:
101
+ # This test requires at least two sub epoch summaries in the block chain,
102
+ # for some test chains, 400 blocks is not enough
102
103
  @pytest.mark.anyio
103
104
  async def test_weight_proof_map_summaries_1(
104
- self, default_400_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
105
+ self, default_1000_blocks: list[FullBlock], blockchain_constants: ConsensusConstants
105
106
  ) -> None:
106
107
  header_cache, height_to_hash, sub_blocks, summaries = await load_blocks_dont_validate(
107
- default_400_blocks, blockchain_constants
108
+ default_1000_blocks, blockchain_constants
108
109
  )
109
110
  await _test_map_summaries(
110
- default_400_blocks, header_cache, height_to_hash, sub_blocks, summaries, blockchain_constants
111
+ default_1000_blocks, header_cache, height_to_hash, sub_blocks, summaries, blockchain_constants
111
112
  )
112
113
 
113
114
  @pytest.mark.anyio
chia/apis/__init__.py ADDED
@@ -0,0 +1,21 @@
1
+ from __future__ import annotations
2
+
3
+ from chia.apis.farmer_stub import FarmerApiStub
4
+ from chia.apis.full_node_stub import FullNodeApiStub
5
+ from chia.apis.harvester_stub import HarvesterApiStub
6
+ from chia.apis.introducer_stub import IntroducerApiStub
7
+ from chia.apis.solver_stub import SolverApiStub
8
+ from chia.apis.stub_protocol_registry import StubMetadataRegistry
9
+ from chia.apis.timelord_stub import TimelordApiStub
10
+ from chia.apis.wallet_stub import WalletNodeApiStub
11
+
12
+ __all__ = [
13
+ "FarmerApiStub",
14
+ "FullNodeApiStub",
15
+ "HarvesterApiStub",
16
+ "IntroducerApiStub",
17
+ "SolverApiStub",
18
+ "StubMetadataRegistry",
19
+ "TimelordApiStub",
20
+ "WalletNodeApiStub",
21
+ ]
@@ -0,0 +1,102 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import ClassVar
5
+
6
+ from typing_extensions import Protocol
7
+
8
+ from chia.protocols import farmer_protocol, harvester_protocol
9
+ from chia.protocols.harvester_protocol import (
10
+ PlotSyncDone,
11
+ PlotSyncPathList,
12
+ PlotSyncPlotList,
13
+ PlotSyncStart,
14
+ RespondPlots,
15
+ RespondSignatures,
16
+ )
17
+ from chia.protocols.outbound_message import Message
18
+ from chia.server.api_protocol import ApiMetadata, ApiProtocol
19
+ from chia.server.ws_connection import WSChiaConnection
20
+
21
+
22
+ class FarmerApiStub(ApiProtocol, Protocol):
23
+ """Non-functional API stub for FarmerAPI
24
+
25
+ This is a protocol definition only - methods are not implemented and should
26
+ never be called. Use the actual FarmerAPI implementation at runtime.
27
+ """
28
+
29
+ log: logging.Logger
30
+ # Create a concrete instance for decorators while keeping the ClassVar type hint for mypy
31
+ metadata: ClassVar[ApiMetadata] = ApiMetadata()
32
+
33
+ def ready(self) -> bool:
34
+ """Check if the farmer is ready."""
35
+ ...
36
+
37
+ @metadata.request(peer_required=True)
38
+ async def new_proof_of_space(
39
+ self, new_proof_of_space: harvester_protocol.NewProofOfSpace, peer: WSChiaConnection
40
+ ) -> None:
41
+ """Handle new proof of space from harvester."""
42
+ ...
43
+
44
+ @metadata.request()
45
+ async def respond_signatures(self, response: RespondSignatures) -> None:
46
+ """Handle signature response from harvester."""
47
+ ...
48
+
49
+ @metadata.request()
50
+ async def new_signage_point(self, new_signage_point: farmer_protocol.NewSignagePoint) -> None:
51
+ """Handle new signage point from full node."""
52
+ ...
53
+
54
+ @metadata.request()
55
+ async def request_signed_values(self, full_node_request: farmer_protocol.RequestSignedValues) -> Message | None:
56
+ """Handle request for signed values from full node."""
57
+ ...
58
+
59
+ @metadata.request(peer_required=True)
60
+ async def farming_info(self, request: farmer_protocol.FarmingInfo, peer: WSChiaConnection) -> None:
61
+ """Handle farming info from full node."""
62
+ ...
63
+
64
+ @metadata.request(peer_required=True)
65
+ async def respond_plots(self, _: RespondPlots, peer: WSChiaConnection) -> None:
66
+ """Handle respond plots from harvester."""
67
+ ...
68
+
69
+ @metadata.request(peer_required=True)
70
+ async def plot_sync_start(self, message: PlotSyncStart, peer: WSChiaConnection) -> None:
71
+ """Handle plot sync start."""
72
+ ...
73
+
74
+ @metadata.request(peer_required=True)
75
+ async def plot_sync_loaded(self, message: PlotSyncPlotList, peer: WSChiaConnection) -> None:
76
+ """Handle plot sync loaded."""
77
+ ...
78
+
79
+ @metadata.request(peer_required=True)
80
+ async def plot_sync_removed(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
81
+ """Handle plot sync removed."""
82
+ ...
83
+
84
+ @metadata.request(peer_required=True)
85
+ async def plot_sync_invalid(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
86
+ """Handle plot sync invalid."""
87
+ ...
88
+
89
+ @metadata.request(peer_required=True)
90
+ async def plot_sync_keys_missing(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
91
+ """Handle plot sync keys missing."""
92
+ ...
93
+
94
+ @metadata.request(peer_required=True)
95
+ async def plot_sync_duplicates(self, message: PlotSyncPathList, peer: WSChiaConnection) -> None:
96
+ """Handle plot sync duplicates."""
97
+ ...
98
+
99
+ @metadata.request(peer_required=True)
100
+ async def plot_sync_done(self, message: PlotSyncDone, peer: WSChiaConnection) -> None:
101
+ """Handle plot sync done."""
102
+ ...
@@ -0,0 +1,374 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import ClassVar
5
+
6
+ from typing_extensions import Protocol
7
+
8
+ from chia.protocols import (
9
+ farmer_protocol,
10
+ full_node_protocol,
11
+ introducer_protocol,
12
+ timelord_protocol,
13
+ wallet_protocol,
14
+ )
15
+ from chia.protocols.outbound_message import Message
16
+ from chia.protocols.protocol_message_types import ProtocolMessageTypes
17
+ from chia.server.api_protocol import ApiMetadata, ApiProtocol
18
+ from chia.server.ws_connection import WSChiaConnection
19
+
20
+
21
+ class FullNodeApiStub(ApiProtocol, Protocol):
22
+ """Non-functional API stub for FullNodeAPI
23
+
24
+ This is a protocol definition only - methods are not implemented and should
25
+ never be called. Use the actual FullNodeAPI implementation at runtime.
26
+ """
27
+
28
+ log: logging.Logger
29
+ metadata: ClassVar[ApiMetadata] = ApiMetadata()
30
+
31
+ def ready(self) -> bool:
32
+ """Check if the full node is ready."""
33
+ ...
34
+
35
+ # PEER PROTOCOL
36
+ @metadata.request(peer_required=True, reply_types=[ProtocolMessageTypes.respond_peers])
37
+ async def request_peers(self, _request: full_node_protocol.RequestPeers, peer: WSChiaConnection) -> Message | None:
38
+ """Handle peer request."""
39
+ ...
40
+
41
+ @metadata.request(peer_required=True)
42
+ async def respond_peers(self, request: full_node_protocol.RespondPeers, peer: WSChiaConnection) -> Message | None:
43
+ """Handle peers response."""
44
+ ...
45
+
46
+ @metadata.request(peer_required=True)
47
+ async def respond_peers_introducer(
48
+ self, request: introducer_protocol.RespondPeersIntroducer, peer: WSChiaConnection
49
+ ) -> Message | None:
50
+ """Handle peers response from introducer."""
51
+ ...
52
+
53
+ # FULL NODE PROTOCOL
54
+ @metadata.request(peer_required=True, execute_task=True)
55
+ async def new_peak(self, request: full_node_protocol.NewPeak, peer: WSChiaConnection) -> None:
56
+ """Handle new peak from peer."""
57
+ ...
58
+
59
+ @metadata.request(peer_required=True)
60
+ async def new_transaction(
61
+ self, transaction: full_node_protocol.NewTransaction, peer: WSChiaConnection
62
+ ) -> Message | None:
63
+ """Handle new transaction from peer."""
64
+ ...
65
+
66
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_transaction])
67
+ async def request_transaction(self, request: full_node_protocol.RequestTransaction) -> Message | None:
68
+ """Handle transaction request."""
69
+ ...
70
+
71
+ @metadata.request(peer_required=True, bytes_required=True)
72
+ async def respond_transaction(
73
+ self,
74
+ tx: full_node_protocol.RespondTransaction,
75
+ peer: WSChiaConnection,
76
+ tx_bytes: bytes = b"",
77
+ test: bool = False,
78
+ ) -> Message | None:
79
+ """Handle transaction response from peer."""
80
+ ...
81
+
82
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_proof_of_weight])
83
+ async def request_proof_of_weight(self, request: full_node_protocol.RequestProofOfWeight) -> Message | None:
84
+ """Handle proof of weight request."""
85
+ ...
86
+
87
+ @metadata.request()
88
+ async def respond_proof_of_weight(self, request: full_node_protocol.RespondProofOfWeight) -> Message | None:
89
+ """Handle proof of weight response."""
90
+ ...
91
+
92
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_block, ProtocolMessageTypes.reject_block])
93
+ async def request_block(self, request: full_node_protocol.RequestBlock) -> Message | None:
94
+ """Handle block request."""
95
+ ...
96
+
97
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_blocks, ProtocolMessageTypes.reject_blocks])
98
+ async def request_blocks(self, request: full_node_protocol.RequestBlocks) -> Message | None:
99
+ """Handle blocks request."""
100
+ ...
101
+
102
+ @metadata.request(peer_required=True)
103
+ async def reject_block(
104
+ self,
105
+ request: full_node_protocol.RejectBlock,
106
+ peer: WSChiaConnection,
107
+ ) -> None:
108
+ """Handle block rejection."""
109
+ ...
110
+
111
+ @metadata.request(peer_required=True)
112
+ async def reject_blocks(
113
+ self,
114
+ request: full_node_protocol.RejectBlocks,
115
+ peer: WSChiaConnection,
116
+ ) -> None:
117
+ """Handle blocks rejection."""
118
+ ...
119
+
120
+ @metadata.request(peer_required=True)
121
+ async def respond_blocks(
122
+ self,
123
+ request: full_node_protocol.RespondBlocks,
124
+ peer: WSChiaConnection,
125
+ ) -> None:
126
+ """Handle blocks response."""
127
+ ...
128
+
129
+ @metadata.request(peer_required=True)
130
+ async def respond_block(
131
+ self,
132
+ respond_block: full_node_protocol.RespondBlock,
133
+ peer: WSChiaConnection,
134
+ ) -> Message | None:
135
+ """Handle block response."""
136
+ ...
137
+
138
+ @metadata.request()
139
+ async def new_unfinished_block(self, new_unfinished_block: full_node_protocol.NewUnfinishedBlock) -> Message | None:
140
+ """Handle new unfinished block."""
141
+ ...
142
+
143
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_unfinished_block])
144
+ async def request_unfinished_block(
145
+ self, request_unfinished_block: full_node_protocol.RequestUnfinishedBlock
146
+ ) -> Message | None:
147
+ """Handle unfinished block request."""
148
+ ...
149
+
150
+ @metadata.request()
151
+ async def new_unfinished_block2(
152
+ self, new_unfinished_block: full_node_protocol.NewUnfinishedBlock2
153
+ ) -> Message | None:
154
+ """Handle new unfinished block v2."""
155
+ ...
156
+
157
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_unfinished_block])
158
+ async def request_unfinished_block2(
159
+ self, request_unfinished_block: full_node_protocol.RequestUnfinishedBlock2
160
+ ) -> Message | None:
161
+ """Handle unfinished block v2 request."""
162
+ ...
163
+
164
+ @metadata.request(peer_required=True)
165
+ async def respond_unfinished_block(
166
+ self,
167
+ respond_unfinished_block: full_node_protocol.RespondUnfinishedBlock,
168
+ peer: WSChiaConnection,
169
+ ) -> Message | None:
170
+ """Handle unfinished block response."""
171
+ ...
172
+
173
+ @metadata.request(peer_required=True)
174
+ async def new_signage_point_or_end_of_sub_slot(
175
+ self, new_sp: full_node_protocol.NewSignagePointOrEndOfSubSlot, peer: WSChiaConnection
176
+ ) -> Message | None:
177
+ """Handle new signage point or end of sub slot."""
178
+ ...
179
+
180
+ @metadata.request(
181
+ reply_types=[ProtocolMessageTypes.respond_signage_point, ProtocolMessageTypes.respond_end_of_sub_slot]
182
+ )
183
+ async def request_signage_point_or_end_of_sub_slot(
184
+ self, request: full_node_protocol.RequestSignagePointOrEndOfSubSlot
185
+ ) -> Message | None:
186
+ """Handle signage point or end of sub slot request."""
187
+ ...
188
+
189
+ @metadata.request(peer_required=True)
190
+ async def respond_signage_point(
191
+ self, request: full_node_protocol.RespondSignagePoint, peer: WSChiaConnection
192
+ ) -> Message | None:
193
+ """Handle signage point response."""
194
+ ...
195
+
196
+ @metadata.request(peer_required=True)
197
+ async def respond_end_of_sub_slot(
198
+ self, request: full_node_protocol.RespondEndOfSubSlot, peer: WSChiaConnection
199
+ ) -> Message | None:
200
+ """Handle end of sub slot response."""
201
+ ...
202
+
203
+ @metadata.request(peer_required=True)
204
+ async def request_mempool_transactions(
205
+ self,
206
+ request: full_node_protocol.RequestMempoolTransactions,
207
+ peer: WSChiaConnection,
208
+ ) -> Message | None:
209
+ """Handle mempool transactions request."""
210
+ ...
211
+
212
+ # FARMER PROTOCOL
213
+ @metadata.request(peer_required=True)
214
+ async def declare_proof_of_space(
215
+ self, request: farmer_protocol.DeclareProofOfSpace, peer: WSChiaConnection
216
+ ) -> Message | None:
217
+ """Handle proof of space declaration from farmer."""
218
+ ...
219
+
220
+ @metadata.request(peer_required=True)
221
+ async def signed_values(
222
+ self, farmer_request: farmer_protocol.SignedValues, peer: WSChiaConnection
223
+ ) -> Message | None:
224
+ """Handle signed values from farmer."""
225
+ ...
226
+
227
+ # TIMELORD PROTOCOL
228
+ @metadata.request(peer_required=True)
229
+ async def new_infusion_point_vdf(
230
+ self, request: timelord_protocol.NewInfusionPointVDF, peer: WSChiaConnection
231
+ ) -> Message | None:
232
+ """Handle new infusion point VDF from timelord."""
233
+ ...
234
+
235
+ @metadata.request(peer_required=True)
236
+ async def new_signage_point_vdf(
237
+ self, request: timelord_protocol.NewSignagePointVDF, peer: WSChiaConnection
238
+ ) -> None:
239
+ """Handle new signage point VDF from timelord."""
240
+ ...
241
+
242
+ @metadata.request(peer_required=True)
243
+ async def new_end_of_sub_slot_vdf(
244
+ self, request: timelord_protocol.NewEndOfSubSlotVDF, peer: WSChiaConnection
245
+ ) -> Message | None:
246
+ """Handle new end of sub slot VDF from timelord."""
247
+ ...
248
+
249
+ @metadata.request(bytes_required=True, execute_task=True)
250
+ async def respond_compact_proof_of_time(
251
+ self, request: timelord_protocol.RespondCompactProofOfTime, request_bytes: bytes = b""
252
+ ) -> None:
253
+ """Handle compact proof of time response from timelord."""
254
+
255
+ @metadata.request(peer_required=True, bytes_required=True, execute_task=True)
256
+ async def new_compact_vdf(
257
+ self, request: full_node_protocol.NewCompactVDF, peer: WSChiaConnection, request_bytes: bytes = b""
258
+ ) -> None:
259
+ """Handle new compact VDF."""
260
+ ...
261
+
262
+ @metadata.request(peer_required=True, reply_types=[ProtocolMessageTypes.respond_compact_vdf])
263
+ async def request_compact_vdf(self, request: full_node_protocol.RequestCompactVDF, peer: WSChiaConnection) -> None:
264
+ """Handle compact VDF request."""
265
+ ...
266
+
267
+ @metadata.request(peer_required=True)
268
+ async def respond_compact_vdf(self, request: full_node_protocol.RespondCompactVDF, peer: WSChiaConnection) -> None:
269
+ """Handle compact VDF response."""
270
+ ...
271
+
272
+ # WALLET PROTOCOL
273
+ @metadata.request()
274
+ async def request_block_header(self, request: wallet_protocol.RequestBlockHeader) -> Message | None:
275
+ """Handle block header request from wallet."""
276
+ ...
277
+
278
+ @metadata.request()
279
+ async def request_additions(self, request: wallet_protocol.RequestAdditions) -> Message | None:
280
+ """Handle additions request from wallet."""
281
+ ...
282
+
283
+ @metadata.request()
284
+ async def request_removals(self, request: wallet_protocol.RequestRemovals) -> Message | None:
285
+ """Handle removals request from wallet."""
286
+ ...
287
+
288
+ @metadata.request(peer_required=True)
289
+ async def send_transaction(
290
+ self, request: wallet_protocol.SendTransaction, peer: WSChiaConnection, *, test: bool = False
291
+ ) -> Message | None:
292
+ """Handle transaction send from wallet."""
293
+ ...
294
+
295
+ @metadata.request()
296
+ async def request_puzzle_solution(self, request: wallet_protocol.RequestPuzzleSolution) -> Message | None:
297
+ """Handle puzzle solution request from wallet."""
298
+ ...
299
+
300
+ @metadata.request()
301
+ async def request_block_headers(self, request: wallet_protocol.RequestBlockHeaders) -> Message | None:
302
+ """Handle block headers request from wallet."""
303
+ ...
304
+
305
+ @metadata.request()
306
+ async def request_header_blocks(self, request: wallet_protocol.RequestHeaderBlocks) -> Message | None:
307
+ """Handle header blocks request from wallet (deprecated)."""
308
+ ...
309
+
310
+ @metadata.request(peer_required=True)
311
+ async def register_for_ph_updates(
312
+ self, request: wallet_protocol.RegisterForPhUpdates, peer: WSChiaConnection
313
+ ) -> Message:
314
+ """Handle puzzle hash updates registration from wallet."""
315
+ ...
316
+
317
+ @metadata.request(peer_required=True)
318
+ async def register_for_coin_updates(
319
+ self, request: wallet_protocol.RegisterForCoinUpdates, peer: WSChiaConnection
320
+ ) -> Message:
321
+ """Handle coin updates registration from wallet."""
322
+ ...
323
+
324
+ @metadata.request()
325
+ async def request_children(self, request: wallet_protocol.RequestChildren) -> Message | None:
326
+ """Handle children request from wallet."""
327
+ ...
328
+
329
+ @metadata.request()
330
+ async def request_ses_hashes(self, request: wallet_protocol.RequestSESInfo) -> Message:
331
+ """Handle SES hashes request from wallet."""
332
+ ...
333
+
334
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_fee_estimates])
335
+ async def request_fee_estimates(self, request: wallet_protocol.RequestFeeEstimates) -> Message:
336
+ """Handle fee estimates request from wallet."""
337
+ ...
338
+
339
+ @metadata.request(
340
+ peer_required=True,
341
+ reply_types=[ProtocolMessageTypes.respond_remove_puzzle_subscriptions],
342
+ )
343
+ async def request_remove_puzzle_subscriptions(
344
+ self, request: wallet_protocol.RequestRemovePuzzleSubscriptions, peer: WSChiaConnection
345
+ ) -> Message:
346
+ """Handle remove puzzle subscriptions request from wallet."""
347
+ ...
348
+
349
+ @metadata.request(
350
+ peer_required=True,
351
+ reply_types=[ProtocolMessageTypes.respond_remove_coin_subscriptions],
352
+ )
353
+ async def request_remove_coin_subscriptions(
354
+ self, request: wallet_protocol.RequestRemoveCoinSubscriptions, peer: WSChiaConnection
355
+ ) -> Message:
356
+ """Handle remove coin subscriptions request from wallet."""
357
+ ...
358
+
359
+ @metadata.request(peer_required=True, reply_types=[ProtocolMessageTypes.respond_puzzle_state])
360
+ async def request_puzzle_state(
361
+ self, request: wallet_protocol.RequestPuzzleState, peer: WSChiaConnection
362
+ ) -> Message:
363
+ """Handle puzzle state request from wallet."""
364
+ ...
365
+
366
+ @metadata.request(peer_required=True, reply_types=[ProtocolMessageTypes.respond_coin_state])
367
+ async def request_coin_state(self, request: wallet_protocol.RequestCoinState, peer: WSChiaConnection) -> Message:
368
+ """Handle coin state request from wallet."""
369
+ ...
370
+
371
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_cost_info])
372
+ async def request_cost_info(self, _request: wallet_protocol.RequestCostInfo) -> Message | None:
373
+ """Handle cost info request from wallet."""
374
+ ...
@@ -0,0 +1,57 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import ClassVar
5
+
6
+ from typing_extensions import Protocol
7
+
8
+ from chia.protocols import harvester_protocol
9
+ from chia.protocols.harvester_protocol import PlotSyncResponse
10
+ from chia.protocols.outbound_message import Message
11
+ from chia.protocols.protocol_message_types import ProtocolMessageTypes
12
+ from chia.server.api_protocol import ApiMetadata, ApiProtocol
13
+ from chia.server.ws_connection import WSChiaConnection
14
+
15
+
16
+ class HarvesterApiStub(ApiProtocol, Protocol):
17
+ """Non-functional API stub for HarvesterAPI
18
+
19
+ This is a protocol definition only - methods are not implemented and should
20
+ never be called. Use the actual HarvesterAPI implementation at runtime.
21
+ """
22
+
23
+ log: logging.Logger
24
+ metadata: ClassVar[ApiMetadata] = ApiMetadata()
25
+
26
+ def ready(self) -> bool:
27
+ """Check if the harvester is ready."""
28
+ ...
29
+
30
+ @metadata.request(peer_required=True)
31
+ async def harvester_handshake(
32
+ self, harvester_handshake: harvester_protocol.HarvesterHandshake, peer: WSChiaConnection
33
+ ) -> None:
34
+ """Handshake between the harvester and farmer."""
35
+ ...
36
+
37
+ @metadata.request(peer_required=True)
38
+ async def new_signage_point_harvester(
39
+ self, new_challenge: harvester_protocol.NewSignagePointHarvester2, peer: WSChiaConnection
40
+ ) -> None:
41
+ """Handle new signage point from farmer."""
42
+ ...
43
+
44
+ @metadata.request(reply_types=[ProtocolMessageTypes.respond_signatures])
45
+ async def request_signatures(self, request: harvester_protocol.RequestSignatures) -> Message | None:
46
+ """Handle signature request from farmer."""
47
+ ...
48
+
49
+ @metadata.request()
50
+ async def request_plots(self, _: harvester_protocol.RequestPlots) -> Message:
51
+ """Handle request for plot information."""
52
+ ...
53
+
54
+ @metadata.request()
55
+ async def plot_sync_response(self, response: PlotSyncResponse) -> None:
56
+ """Handle plot sync response."""
57
+ ...