chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5rc1__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 +421 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +60 -131
  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 +305 -184
  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 +143 -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 +26 -40
  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 +273 -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.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.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.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/entry_points.txt +0 -0
@@ -3,10 +3,10 @@ from __future__ import annotations
3
3
  import io
4
4
  import re
5
5
  from dataclasses import dataclass, field, fields
6
- from typing import Any, Callable, Optional, get_type_hints
6
+ from typing import Any, Callable, ClassVar, Optional, get_type_hints
7
7
 
8
8
  import pytest
9
- from chia_rs import G1Element, SubEpochChallengeSegment
9
+ from chia_rs import FullBlock, G1Element, SubEpochChallengeSegment
10
10
  from chia_rs.sized_bytes import bytes4, bytes32
11
11
  from chia_rs.sized_ints import uint8, uint32, uint64
12
12
  from clvm_tools import binutils
@@ -16,7 +16,6 @@ from chia.protocols.wallet_protocol import RespondRemovals
16
16
  from chia.simulator.block_tools import BlockTools, test_constants
17
17
  from chia.types.blockchain_format.coin import Coin
18
18
  from chia.types.blockchain_format.program import Program
19
- from chia.types.full_block import FullBlock
20
19
  from chia.util.streamable import (
21
20
  ConversionError,
22
21
  DefinitionError,
@@ -27,6 +26,7 @@ from chia.util.streamable import (
27
26
  UnsupportedType,
28
27
  function_to_parse_one_item,
29
28
  function_to_stream_one_item,
29
+ is_type_Dict,
30
30
  is_type_List,
31
31
  is_type_SpecificOptional,
32
32
  is_type_Tuple,
@@ -62,15 +62,6 @@ def test_float_not_supported() -> None:
62
62
  a: float
63
63
 
64
64
 
65
- def test_dict_not_suppported() -> None:
66
- with pytest.raises(UnsupportedType):
67
-
68
- @streamable
69
- @dataclass(frozen=True)
70
- class TestClassDict(Streamable):
71
- a: dict[str, str]
72
-
73
-
74
65
  @dataclass(frozen=True)
75
66
  class DataclassOnly:
76
67
  a: uint8
@@ -164,6 +155,28 @@ def test_convert_list_failures(input_dict: dict[str, Any], error: Any) -> None:
164
155
  streamable_from_dict(ConvertListFailures, input_dict)
165
156
 
166
157
 
158
+ @streamable
159
+ @dataclass(frozen=True)
160
+ class ConvertDictFailures(Streamable):
161
+ a: dict[str, str]
162
+ b: dict[str, dict[str, str]]
163
+
164
+
165
+ @pytest.mark.parametrize(
166
+ "input_dict, error",
167
+ [
168
+ pytest.param({"a": [1, 1], "b": {"foo": [2, 2]}}, InvalidTypeError, id="a: invalid type list"),
169
+ pytest.param({"a": 1, "b": {"foo": "bar"}}, InvalidTypeError, id="a: invalid type int"),
170
+ pytest.param({"a": "11", "b": {"foo": "bar"}}, InvalidTypeError, id="a: invalid type str"),
171
+ pytest.param({"a": {"foo": "bar"}, "b": {1: {"foo": "bar"}}}, InvalidTypeError, id="b: invalid type int"),
172
+ pytest.param({"a": {"foo": "bar"}, "b": {"foo": {"foo": 1}}}, InvalidTypeError, id="b: invalid type int"),
173
+ ],
174
+ )
175
+ def test_convert_dict_failures(input_dict: dict[str, Any], error: Any) -> None:
176
+ with pytest.raises(error):
177
+ streamable_from_dict(ConvertListFailures, input_dict)
178
+
179
+
167
180
  @streamable
168
181
  @dataclass(frozen=True)
169
182
  class ConvertByteTypeFailures(Streamable):
@@ -320,16 +333,21 @@ class TestFromJsonDictDefaultValues(Streamable):
320
333
  a: uint64 = uint64(1)
321
334
  b: str = "default"
322
335
  c: list[uint64] = field(default_factory=list)
336
+ d: dict[str, str] = field(default_factory=dict)
323
337
 
324
338
 
325
339
  @pytest.mark.parametrize(
326
340
  "input_dict, output_dict",
327
341
  [
328
- [{}, {"a": 1, "b": "default", "c": []}],
329
- [{"a": 2}, {"a": 2, "b": "default", "c": []}],
330
- [{"b": "not_default"}, {"a": 1, "b": "not_default", "c": []}],
331
- [{"c": [1, 2]}, {"a": 1, "b": "default", "c": [1, 2]}],
332
- [{"a": 2, "b": "not_default", "c": [1, 2]}, {"a": 2, "b": "not_default", "c": [1, 2]}],
342
+ [{}, {"a": 1, "b": "default", "c": [], "d": {}}],
343
+ [{"a": 2}, {"a": 2, "b": "default", "c": [], "d": {}}],
344
+ [{"b": "not_default"}, {"a": 1, "b": "not_default", "c": [], "d": {}}],
345
+ [{"c": [1, 2]}, {"a": 1, "b": "default", "c": [1, 2], "d": {}}],
346
+ [{"d": {"foo": "bar"}}, {"a": 1, "b": "default", "c": [], "d": {"foo": "bar"}}],
347
+ [
348
+ {"a": 2, "b": "not_default", "c": [1, 2], "d": {"foo": "bar"}},
349
+ {"a": 2, "b": "not_default", "c": [1, 2], "d": {"foo": "bar"}},
350
+ ],
333
351
  ],
334
352
  )
335
353
  def test_from_json_dict_default_values(input_dict: dict[str, object], output_dict: dict[str, object]) -> None:
@@ -372,7 +390,7 @@ class PostInitTestClassBasic(Streamable):
372
390
  @dataclass(frozen=True)
373
391
  class PostInitTestClassBad(Streamable):
374
392
  a: uint8
375
- b = 0
393
+ b: ClassVar[uint8] = uint8(0)
376
394
 
377
395
 
378
396
  @streamable
@@ -398,6 +416,13 @@ class PostInitTestClassTuple(Streamable):
398
416
  b: tuple[tuple[uint8, str], bytes32]
399
417
 
400
418
 
419
+ @streamable
420
+ @dataclass(frozen=True)
421
+ class PostInitTestClassDict(Streamable):
422
+ a: dict[uint8, str]
423
+ b: dict[bytes32, dict[uint8, str]]
424
+
425
+
401
426
  @pytest.mark.parametrize(
402
427
  "test_class, args",
403
428
  [
@@ -406,6 +431,7 @@ class PostInitTestClassTuple(Streamable):
406
431
  (PostInitTestClassBad, (25,)),
407
432
  (PostInitTestClassList, ([1, 2, 3], [[G1Element(), bytes(G1Element())], [bytes(G1Element())]])),
408
433
  (PostInitTestClassTuple, ((1, "test"), ((200, "test_2"), b"\xba" * 32))),
434
+ (PostInitTestClassDict, ({1: "bar"}, {bytes32.zeros: {1: "bar"}})),
409
435
  (PostInitTestClassOptional, (12, None, 13, None)),
410
436
  ],
411
437
  )
@@ -421,6 +447,12 @@ def test_post_init_valid(test_class: type[Any], args: tuple[Any, ...]) -> None:
421
447
  list_type = get_args(type_in)[0]
422
448
  assert type(item) is list
423
449
  return all(validate_item_type(list_type, list_item) for list_item in item)
450
+ if is_type_Dict(type_in):
451
+ [key_type, value_type] = get_args(type_in)
452
+ assert type(item) is dict
453
+ return validate_item_type(key_type, next(iter(item.keys()))) and validate_item_type(
454
+ value_type, next(iter(item.values()))
455
+ )
424
456
  return isinstance(item, type_in)
425
457
 
426
458
  test_object = test_class(*args)
@@ -464,9 +496,19 @@ def test_basic() -> None:
464
496
  e: Optional[uint32]
465
497
  f: Optional[uint32]
466
498
  g: tuple[uint32, str, bytes]
499
+ h: dict[uint32, str]
467
500
 
468
501
  # we want to test invalid here, hence the ignore.
469
- a = TestClass(24, 352, [1, 2, 4], [[1, 2, 3], [3, 4]], 728, None, (383, "hello", b"goodbye")) # type: ignore[arg-type,list-item]
502
+ a = TestClass(
503
+ uint32(24),
504
+ uint32(352),
505
+ [uint32(1), uint32(2), uint32(4)],
506
+ [[uint32(1), uint32(2), uint32(3)], [uint32(3), uint32(4)]],
507
+ uint32(728),
508
+ None,
509
+ (uint32(383), "hello", b"goodbye"),
510
+ {uint32(1): "foo"},
511
+ )
470
512
 
471
513
  b: bytes = bytes(a)
472
514
  assert a == TestClass.from_bytes(b)
@@ -801,7 +843,7 @@ class TestFromBytes:
801
843
  class FailFromBytes:
802
844
  @classmethod
803
845
  def from_bytes(cls, b: bytes) -> FailFromBytes:
804
- raise ValueError()
846
+ raise ValueError
805
847
 
806
848
 
807
849
  def test_parse_str() -> None:
@@ -869,10 +911,8 @@ def test_streamable_inheritance_missing() -> None:
869
911
  [
870
912
  (function_to_parse_one_item, float),
871
913
  (function_to_parse_one_item, int),
872
- (function_to_parse_one_item, dict),
873
914
  (function_to_stream_one_item, float),
874
915
  (function_to_stream_one_item, int),
875
- (function_to_stream_one_item, dict),
876
916
  (recurse_jsonify, 1.0),
877
917
  (recurse_jsonify, recurse_jsonify),
878
918
  ],
@@ -880,3 +920,22 @@ def test_streamable_inheritance_missing() -> None:
880
920
  def test_unsupported_types(method: Callable[[object], object], input_type: object) -> None:
881
921
  with pytest.raises(UnsupportedType):
882
922
  method(input_type)
923
+
924
+
925
+ @streamable
926
+ @dataclass(frozen=True)
927
+ class UnsupportedDictToSerialize(Streamable):
928
+ a: list[tuple[str, uint8]]
929
+
930
+
931
+ @streamable
932
+ @dataclass(frozen=True)
933
+ class UnsupportedDictToDeserialize(Streamable):
934
+ a: dict[str, uint8]
935
+
936
+
937
+ def test_duplicate_dict_key_error() -> None:
938
+ with pytest.raises(ValueError, match="duplicate dict keys"):
939
+ UnsupportedDictToDeserialize.from_bytes(
940
+ bytes(UnsupportedDictToSerialize([("foo", uint8(1)), ("foo", uint8(2))]))
941
+ )
@@ -24,8 +24,6 @@ if TYPE_CHECKING:
24
24
  class UniqueError(Exception):
25
25
  """Used to uniquely trigger the exception path out of the context managers."""
26
26
 
27
- pass
28
-
29
27
 
30
28
  async def increment_counter(db_wrapper: DBWrapper2) -> None:
31
29
  async with db_wrapper.writer_maybe_transaction() as connection:
@@ -427,7 +425,7 @@ async def test_cancelled_reader_does_not_cancel_writer() -> None:
427
425
 
428
426
  with pytest.raises(UniqueError):
429
427
  async with db_wrapper.reader() as _:
430
- raise UniqueError()
428
+ raise UniqueError
431
429
 
432
430
  assert await query_value(connection=writer) == 1
433
431
 
@@ -14,10 +14,8 @@ from chia_rs.sized_ints import uint32, uint64
14
14
  from chia._tests.environments.common import ServiceEnvironment
15
15
  from chia.cmds.cmd_helpers import NeedsTXConfig, NeedsWalletRPC, TransactionEndpoint, TransactionsOut, WalletClientInfo
16
16
  from chia.cmds.param_types import CliAmount, cli_amount_none
17
- from chia.rpc.full_node_rpc_client import FullNodeRpcClient
17
+ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
18
18
  from chia.rpc.rpc_server import RpcServer
19
- from chia.rpc.wallet_rpc_api import WalletRpcApi
20
- from chia.rpc.wallet_rpc_client import WalletRpcClient
21
19
  from chia.server.server import ChiaServer
22
20
  from chia.server.start_service import Service
23
21
  from chia.simulator.full_node_simulator import FullNodeSimulator
@@ -27,6 +25,8 @@ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
27
25
  from chia.wallet.wallet import Wallet
28
26
  from chia.wallet.wallet_node import Balance, WalletNode
29
27
  from chia.wallet.wallet_node_api import WalletNodeAPI
28
+ from chia.wallet.wallet_rpc_api import WalletRpcApi
29
+ from chia.wallet.wallet_rpc_client import WalletRpcClient
30
30
  from chia.wallet.wallet_state_manager import WalletStateManager
31
31
 
32
32
  STANDARD_TX_ENDPOINT_ARGS: dict[str, Any] = TransactionEndpoint(
@@ -355,7 +355,7 @@ class WalletTestFramework:
355
355
  for env in self.environments:
356
356
  ph_indexes: dict[uint32, int] = {}
357
357
  for wallet_id in env.wallet_state_manager.wallets:
358
- ph_indexes[wallet_id] = await env.wallet_state_manager.puzzle_store.get_unused_count(wallet_id)
358
+ ph_indexes[wallet_id] = await env.wallet_state_manager.puzzle_store.get_used_count(wallet_id)
359
359
  puzzle_hash_indexes.append(ph_indexes)
360
360
 
361
361
  pending_txs: list[list[LightTransactionRecord]] = []
@@ -426,5 +426,5 @@ class WalletTestFramework:
426
426
  for env, ph_indexes_before in zip(self.environments, puzzle_hash_indexes):
427
427
  for wallet_id, ph_index in zip(env.wallet_state_manager.wallets, ph_indexes_before):
428
428
  assert ph_indexes_before[wallet_id] == (
429
- await env.wallet_state_manager.puzzle_store.get_unused_count(wallet_id)
429
+ await env.wallet_state_manager.puzzle_store.get_used_count(wallet_id)
430
430
  )
@@ -9,10 +9,11 @@ from typing import Any, Optional, Union, cast
9
9
  from unittest.mock import ANY
10
10
 
11
11
  import pytest
12
- from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
12
+ from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey, ProofOfSpace
13
13
  from chia_rs.sized_bytes import bytes32
14
14
  from chia_rs.sized_ints import uint8, uint16, uint32, uint64
15
15
  from pytest_mock import MockerFixture
16
+ from typing_extensions import Self
16
17
  from yarl import URL
17
18
 
18
19
  from chia import __version__
@@ -24,11 +25,10 @@ from chia.pools.pool_config import PoolWalletConfig
24
25
  from chia.protocols import farmer_protocol, harvester_protocol
25
26
  from chia.protocols.harvester_protocol import NewProofOfSpace, RespondSignatures
26
27
  from chia.protocols.pool_protocol import PoolErrorCode
28
+ from chia.server.aliases import FarmerService, HarvesterService
27
29
  from chia.server.ws_connection import WSChiaConnection
28
30
  from chia.simulator.block_tools import BlockTools
29
- from chia.types.aliases import FarmerService, HarvesterService
30
31
  from chia.types.blockchain_format.proof_of_space import (
31
- ProofOfSpace,
32
32
  generate_plot_public_key,
33
33
  verify_and_get_quality_string,
34
34
  )
@@ -571,13 +571,14 @@ async def test_farmer_new_proof_of_space_for_pool_stats(
571
571
  sub_slot_iters=case.sub_slot_iters,
572
572
  signage_point_index=case.signage_point_index,
573
573
  peak_height=uint32(1),
574
+ last_tx_height=uint32(0),
574
575
  )
575
576
  pos = ProofOfSpace(
576
577
  challenge=case.plot_challenge,
577
578
  pool_public_key=case.pool_public_key,
578
579
  pool_contract_puzzle_hash=case.pool_contract_puzzle_hash,
579
580
  plot_public_key=case.plot_public_key,
580
- size=case.plot_size,
581
+ version_and_size=case.plot_size,
581
582
  proof=case.proof,
582
583
  )
583
584
  new_pos = NewProofOfSpace(
@@ -680,7 +681,7 @@ class DummyPoolResponse:
680
681
 
681
682
  return json.dumps(json_dict)
682
683
 
683
- async def __aenter__(self) -> DummyPoolResponse:
684
+ async def __aenter__(self) -> Self:
684
685
  return self
685
686
 
686
687
  async def __aexit__(
@@ -711,13 +712,14 @@ def create_valid_pos(farmer: Farmer) -> tuple[farmer_protocol.NewSignagePoint, P
711
712
  sub_slot_iters=case.sub_slot_iters,
712
713
  signage_point_index=case.signage_point_index,
713
714
  peak_height=uint32(1),
715
+ last_tx_height=uint32(0),
714
716
  )
715
717
  pos = ProofOfSpace(
716
718
  challenge=case.plot_challenge,
717
719
  pool_public_key=case.pool_public_key,
718
720
  pool_contract_puzzle_hash=case.pool_contract_puzzle_hash,
719
721
  plot_public_key=case.plot_public_key,
720
- size=case.plot_size,
722
+ version_and_size=case.plot_size,
721
723
  proof=case.proof,
722
724
  )
723
725
  new_pos = NewProofOfSpace(
@@ -1003,7 +1005,7 @@ class DummyPoolInfoResponse:
1003
1005
 
1004
1006
  return json.dumps(self.pool_info)
1005
1007
 
1006
- async def __aenter__(self) -> DummyPoolInfoResponse:
1008
+ async def __aenter__(self) -> Self:
1007
1009
  return self
1008
1010
 
1009
1011
  async def __aexit__(
@@ -15,13 +15,13 @@ from chia._tests.util.split_managers import split_async_manager
15
15
  from chia._tests.util.time_out_assert import time_out_assert
16
16
  from chia.cmds.cmds_util import get_any_service_client
17
17
  from chia.farmer.farmer import Farmer
18
+ from chia.harvester.harvester_rpc_client import HarvesterRpcClient
18
19
  from chia.plotting.util import PlotsRefreshParameter
19
20
  from chia.protocols import farmer_protocol, harvester_protocol
21
+ from chia.protocols.outbound_message import NodeType, make_msg
20
22
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
21
- from chia.rpc.harvester_rpc_client import HarvesterRpcClient
22
- from chia.server.outbound_message import NodeType, make_msg
23
+ from chia.server.aliases import FarmerService, HarvesterService
23
24
  from chia.simulator.block_tools import BlockTools
24
- from chia.types.aliases import FarmerService, HarvesterService
25
25
  from chia.types.peer_info import UnresolvedPeerInfo
26
26
  from chia.util.config import load_config
27
27
  from chia.util.hash import std_hash
@@ -221,7 +221,14 @@ async def test_missing_signage_point(
221
221
  def create_sp(index: int, challenge_hash: bytes32) -> tuple[uint64, farmer_protocol.NewSignagePoint]:
222
222
  time = uint64(index + 1)
223
223
  sp = farmer_protocol.NewSignagePoint(
224
- challenge_hash, std_hash(b"2"), std_hash(b"3"), uint64(1), uint64(1000000), uint8(index), uint32(1)
224
+ challenge_hash,
225
+ std_hash(b"2"),
226
+ std_hash(b"3"),
227
+ uint64(1),
228
+ uint64(1000000),
229
+ uint8(index),
230
+ uint32(1),
231
+ uint32(0),
225
232
  )
226
233
  return time, sp
227
234
 
@@ -5,6 +5,7 @@ from pathlib import Path
5
5
  from typing import Any, Optional
6
6
 
7
7
  import pytest
8
+ from chia_rs import FullBlock
8
9
  from chia_rs.sized_bytes import bytes32
9
10
  from chia_rs.sized_ints import uint8, uint32, uint64
10
11
 
@@ -13,13 +14,12 @@ from chia._tests.core.test_farmer_harvester_rpc import wait_for_plot_sync
13
14
  from chia._tests.util.setup_nodes import setup_farmer_multi_harvester
14
15
  from chia._tests.util.time_out_assert import time_out_assert
15
16
  from chia.farmer.farmer_api import FarmerAPI
17
+ from chia.farmer.farmer_rpc_client import FarmerRpcClient
18
+ from chia.harvester.harvester_rpc_client import HarvesterRpcClient
16
19
  from chia.protocols import farmer_protocol
17
- from chia.rpc.farmer_rpc_client import FarmerRpcClient
18
- from chia.rpc.harvester_rpc_client import HarvesterRpcClient
20
+ from chia.server.aliases import HarvesterService
19
21
  from chia.simulator.block_tools import create_block_tools_async, test_constants
20
- from chia.types.aliases import HarvesterService
21
22
  from chia.types.blockchain_format.proof_of_space import get_plot_id, passes_plot_filter
22
- from chia.types.full_block import FullBlock
23
23
  from chia.util.keychain import Keychain
24
24
 
25
25
 
@@ -56,7 +56,7 @@ async def farmer_harvester_with_filter_size_9(
56
56
  return len(await farmer_rpc_cl.get_connections()) > 0
57
57
 
58
58
  local_b_tools = await create_block_tools_async(
59
- constants=test_constants.replace(NUMBER_ZERO_BITS_PLOT_FILTER=uint8(9)), keychain=get_temp_keyring
59
+ constants=test_constants.replace(NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(9)), keychain=get_temp_keyring
60
60
  )
61
61
  new_config = local_b_tools._config
62
62
  local_b_tools.change_config(new_config)
@@ -121,6 +121,7 @@ async def test_filter_prefix_bits_with_farmer_harvester(
121
121
  sub_slot_iters=uint64(1000000),
122
122
  signage_point_index=uint8(2),
123
123
  peak_height=peak_height,
124
+ last_tx_height=uint32(0),
124
125
  )
125
126
  await farmer_api.new_signage_point(sp)
126
127
  await time_out_assert(5, state_has_changed, True)
@@ -10,12 +10,21 @@ from os.path import dirname
10
10
  from typing import Optional, Union, cast
11
11
 
12
12
  import pytest
13
- from chia_rs import FoliageBlockData, FoliageTransactionBlock, G1Element
13
+ from chia_rs import (
14
+ ChallengeChainSubSlot,
15
+ FoliageBlockData,
16
+ FoliageTransactionBlock,
17
+ FullBlock,
18
+ G1Element,
19
+ ProofOfSpace,
20
+ RewardChainSubSlot,
21
+ )
14
22
  from chia_rs.sized_bytes import bytes32
15
23
  from chia_rs.sized_ints import uint8, uint32, uint64
16
24
 
17
25
  from chia._tests.util.misc import patch_request_handler
18
26
  from chia._tests.util.time_out_assert import time_out_assert
27
+ from chia.consensus.augmented_chain import AugmentedBlockchain
19
28
  from chia.consensus.block_body_validation import ForkInfo
20
29
  from chia.consensus.blockchain import AddBlockResult
21
30
  from chia.consensus.difficulty_adjustment import get_next_sub_slot_iters_and_difficulty
@@ -28,20 +37,16 @@ from chia.harvester.harvester import Harvester
28
37
  from chia.harvester.harvester_api import HarvesterAPI
29
38
  from chia.protocols import farmer_protocol, full_node_protocol, harvester_protocol, timelord_protocol
30
39
  from chia.protocols.harvester_protocol import ProofOfSpaceFeeInfo, RespondSignatures, SigningDataKind
40
+ from chia.protocols.outbound_message import Message, NodeType, make_msg
31
41
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
32
- from chia.server.outbound_message import Message, NodeType, make_msg
42
+ from chia.server.aliases import FarmerService, FullNodeService, HarvesterService
33
43
  from chia.server.server import ChiaServer
34
44
  from chia.server.ws_connection import WSChiaConnection
35
45
  from chia.simulator.block_tools import BlockTools
36
46
  from chia.simulator.start_simulator import SimulatorFullNodeService
37
- from chia.types.aliases import FarmerService, FullNodeService, HarvesterService
38
47
  from chia.types.blockchain_format.classgroup import ClassgroupElement
39
- from chia.types.blockchain_format.proof_of_space import ProofOfSpace
40
- from chia.types.blockchain_format.slots import ChallengeChainSubSlot, RewardChainSubSlot
41
- from chia.types.full_block import FullBlock
42
48
  from chia.types.peer_info import UnresolvedPeerInfo
43
49
  from chia.types.validation_state import ValidationState
44
- from chia.util.augmented_chain import AugmentedBlockchain
45
50
  from chia.util.bech32m import decode_puzzle_hash
46
51
  from chia.util.hash import std_hash
47
52
 
@@ -72,7 +77,6 @@ async def test_harvester_receive_source_signing_data(
72
77
  full_node_service_2,
73
78
  _,
74
79
  ) = farmer_harvester_2_simulators_zero_bits_plot_filter
75
-
76
80
  farmer: Farmer = farmer_service._node
77
81
  harvester: Harvester = harvester_service._node
78
82
  full_node_1: FullNode = full_node_service_1._node
@@ -101,6 +105,7 @@ async def test_harvester_receive_source_signing_data(
101
105
  # so that we have blocks generated that have our farmer reward address, instead
102
106
  # of the GENESIS_PRE_FARM_FARMER_PUZZLE_HASH.
103
107
  await add_test_blocks_into_full_node(blocks, full_node_2)
108
+ await time_out_assert(60, full_node_2.blockchain.get_peak_height, blocks[-1].height)
104
109
 
105
110
  validated_foliage_data = False
106
111
  validated_foliage_transaction = False
@@ -359,6 +364,7 @@ def prepare_sp_and_pos_for_fee_test(
359
364
  sub_slot_iters=uint64(0),
360
365
  signage_point_index=uint8(0),
361
366
  peak_height=uint32(1),
367
+ last_tx_height=uint32(0),
362
368
  )
363
369
 
364
370
  pos = harvester_protocol.NewProofOfSpace(
@@ -370,7 +376,7 @@ def prepare_sp_and_pos_for_fee_test(
370
376
  pool_public_key=None,
371
377
  pool_contract_puzzle_hash=None,
372
378
  plot_public_key=pubkey,
373
- size=uint8(len(proof)),
379
+ version_and_size=uint8(32),
374
380
  proof=proof,
375
381
  ),
376
382
  signage_point_index=uint8(0),
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import types
4
4
 
5
5
  import pytest
6
- from chia_rs import Coin
6
+ from chia_rs import Coin, SpendBundleConditions, SpendConditions
7
7
  from chia_rs.sized_ints import uint32, uint64
8
8
 
9
9
  from chia._tests.core.mempool.test_mempool_manager import (
@@ -28,7 +28,6 @@ from chia.simulator.wallet_tools import WalletTool
28
28
  from chia.types.clvm_cost import CLVMCost
29
29
  from chia.types.fee_rate import FeeRate, FeeRateV2
30
30
  from chia.types.mempool_item import MempoolItem
31
- from chia.types.spend_bundle_conditions import SpendBundleConditions, SpendConditions
32
31
 
33
32
 
34
33
  def make_mempoolitem() -> MempoolItem:
@@ -4,19 +4,20 @@ import re
4
4
  from typing import Any
5
5
 
6
6
  import pytest
7
+ from chia_rs import SpendBundle
7
8
  from chia_rs.sized_bytes import bytes32
8
9
  from chia_rs.sized_ints import uint64
9
10
 
10
- from chia.rpc.full_node_rpc_api import FullNodeRpcApi
11
- from chia.rpc.full_node_rpc_client import FullNodeRpcClient
11
+ from chia.full_node.full_node_rpc_api import FullNodeRpcApi
12
+ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
13
+ from chia.server.aliases import WalletService
12
14
  from chia.simulator.block_tools import BlockTools
13
15
  from chia.simulator.full_node_simulator import FullNodeSimulator
14
16
  from chia.simulator.simulator_protocol import FarmNewBlockProtocol
15
17
  from chia.simulator.start_simulator import SimulatorFullNodeService
16
18
  from chia.simulator.wallet_tools import WalletTool
17
- from chia.types.aliases import WalletService
18
19
  from chia.types.blockchain_format.coin import Coin
19
- from chia.types.spend_bundle import SpendBundle
20
+ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
20
21
 
21
22
 
22
23
  @pytest.fixture(scope="function")
@@ -37,7 +38,8 @@ async def setup_node_and_rpc(
37
38
  )
38
39
  full_node_rpc_api = FullNodeRpcApi(full_node_api.full_node)
39
40
 
40
- ph = await wallet.get_new_puzzlehash()
41
+ async with wallet.wallet_state_manager.new_action_scope(DEFAULT_TX_CONFIG, push=True) as action_scope:
42
+ ph = await action_scope.get_puzzle_hash(wallet.wallet_state_manager)
41
43
 
42
44
  for i in range(4):
43
45
  await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(ph))
@@ -80,7 +80,7 @@ def test_steady_fee_pressure() -> None:
80
80
  estimation = estimator.estimate_fee_rate(time_offset_seconds=time_offset_seconds * (height - start_from))
81
81
  estimates_after.append(estimation)
82
82
 
83
- block_estimates = [estimator.estimate_fee_rate_for_block(uint32(h + 1)) for h in range(0, 50)]
83
+ block_estimates = [estimator.estimate_fee_rate_for_block(uint32(h + 1)) for h in range(50)]
84
84
  for idx, es_after in enumerate(estimates_after):
85
85
  assert abs(es_after.mojos_per_clvm_cost - estimates_during[idx].mojos_per_clvm_cost) < 0.001
86
86
  assert es_after.mojos_per_clvm_cost == block_estimates[idx].mojos_per_clvm_cost
@@ -12,14 +12,13 @@ from chia_puzzles_py.programs import (
12
12
  DECOMPRESS_PUZZLE,
13
13
  ROM_BOOTSTRAP_GENERATOR,
14
14
  )
15
- from chia_rs import serialized_length
15
+ from chia_rs import SpendBundle, serialized_length
16
16
  from chia_rs.sized_ints import uint32
17
17
  from clvm.serialize import sexp_from_stream
18
18
  from clvm.SExp import SExp
19
19
  from clvm_tools import binutils
20
20
 
21
21
  from chia.types.blockchain_format.program import INFINITE_COST, Program
22
- from chia.types.spend_bundle import SpendBundle
23
22
  from chia.util.byte_types import hexstr_to_bytes
24
23
  from chia.wallet.puzzles.load_clvm import load_clvm
25
24
 
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from chia_puzzles_py.programs import CHIALISP_DESERIALISATION, ROM_BOOTSTRAP_GENERATOR
4
+ from chia_rs import SpendConditions
4
5
  from chia_rs.sized_bytes import bytes32
5
6
  from chia_rs.sized_ints import uint32
6
7
  from clvm.CLVMObject import CLVMStorage
@@ -10,10 +11,9 @@ from clvm_tools.clvmc import compile_clvm_text
10
11
  from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
11
12
  from chia.consensus.condition_costs import ConditionCost
12
13
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
13
- from chia.types.blockchain_format.program import Program
14
+ from chia.types.blockchain_format.program import Program, run_with_cost
14
15
  from chia.types.blockchain_format.serialized_program import SerializedProgram
15
16
  from chia.types.generator_types import BlockGenerator
16
- from chia.types.spend_bundle_conditions import SpendConditions
17
17
 
18
18
  DESERIALIZE_MOD = Program.from_bytes(CHIALISP_DESERIALISATION)
19
19
 
@@ -77,7 +77,7 @@ EXPECTED_OUTPUT = (
77
77
  def run_generator(self: BlockGenerator) -> tuple[int, Program]:
78
78
  """This mode is meant for accepting possibly soft-forked transactions into the mempool"""
79
79
  args = Program.to([self.generator_refs])
80
- return GENERATOR_MOD.run_with_cost(MAX_COST, [self.program, args])
80
+ return run_with_cost(GENERATOR_MOD, MAX_COST, [self.program, args])
81
81
 
82
82
 
83
83
  def as_atom_list(prg: CLVMStorage) -> list[bytes]:
@@ -110,7 +110,7 @@ class TestROM:
110
110
 
111
111
  args = Program.to([DESERIALIZE_MOD, [FIRST_GENERATOR, SECOND_GENERATOR]])
112
112
  sp = to_sp(COMPILED_GENERATOR_CODE)
113
- cost, r = sp.run_with_cost(MAX_COST, args)
113
+ cost, r = run_with_cost(sp, MAX_COST, args)
114
114
  assert cost == EXPECTED_ABBREVIATED_COST
115
115
  assert r.as_bin().hex() == EXPECTED_OUTPUT
116
116
 
@@ -155,6 +155,10 @@ class TestROM:
155
155
  agg_sig_parent_amount=[],
156
156
  agg_sig_parent_puzzle=[],
157
157
  flags=0,
158
+ # in run_block_generator() we don't have access to separate
159
+ # execution cost, just in run_block_generator2()
160
+ execution_cost=0 if softfork_height < DEFAULT_CONSTANTS.HARD_FORK_HEIGHT else 44,
161
+ condition_cost=1800000,
158
162
  )
159
163
 
160
164
  assert npc_result.conds.spends == [spend]
@@ -29,8 +29,8 @@ from chia.plotting.manager import PlotManager
29
29
  from chia.plotting.util import add_plot_directory, remove_plot_directory
30
30
  from chia.protocols.harvester_protocol import Plot
31
31
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
32
+ from chia.server.aliases import FarmerService, HarvesterService
32
33
  from chia.simulator.block_tools import BlockTools
33
- from chia.types.aliases import FarmerService, HarvesterService
34
34
  from chia.util.config import create_default_chia_config, lock_and_load_config, save_config
35
35
  from chia.util.streamable import _T_Streamable
36
36
 
@@ -537,7 +537,7 @@ async def test_farmer_restart(environment: Environment) -> None:
537
537
  # Load all directories for both harvesters
538
538
  await add_and_validate_all_directories(env)
539
539
  last_sync_ids: list[uint64] = []
540
- for i in range(0, len(env.harvesters)):
540
+ for i in range(len(env.harvesters)):
541
541
  last_sync_ids.append(env.harvesters[i].plot_sync_sender._last_sync_id)
542
542
  # Stop the farmer and make sure both receivers get dropped and refreshing gets stopped on the harvesters
543
543
  await env.split_farmer_service_manager.exit()
@@ -551,7 +551,7 @@ async def test_farmer_restart(environment: Environment) -> None:
551
551
  assert len(env.farmer.plot_sync_receivers) == 2
552
552
  # Do not use run_sync_test here, to have a more realistic test scenario just
553
553
  # wait for the harvesters to be synced. The handshake should trigger re-sync.
554
- for i in range(0, len(env.harvesters)):
554
+ for i in range(len(env.harvesters)):
555
555
  harvester: Harvester = env.harvesters[i]
556
556
  assert harvester.server is not None
557
557
  receiver = env.farmer.plot_sync_receivers[harvester.server.node_id]
@@ -26,7 +26,7 @@ from chia.protocols.harvester_protocol import (
26
26
  PlotSyncResponse,
27
27
  PlotSyncStart,
28
28
  )
29
- from chia.server.outbound_message import NodeType
29
+ from chia.protocols.outbound_message import NodeType
30
30
  from chia.util.streamable import _T_Streamable
31
31
 
32
32
  log = logging.getLogger(__name__)
@@ -137,7 +137,7 @@ async def run_sync_step(receiver: Receiver, sync_step: SyncStepData) -> None:
137
137
  assert len(step_data) == 10
138
138
  # Invoke batches of: 1, 2, 3, 4 items and validate the data against plot store before and after
139
139
  indexes = [0, 1, 3, 6, 10]
140
- for i in range(0, len(indexes) - 1):
140
+ for i in range(len(indexes) - 1):
141
141
  plots_processed_before = receiver.current_sync().plots_processed
142
142
  invoke_data = step_data[indexes[i] : indexes[i + 1]]
143
143
  pre_function_validate(receiver, invoke_data, sync_step.state)
@@ -166,7 +166,7 @@ def plot_sync_setup(seeded_random: random.Random) -> tuple[Receiver, list[SyncSt
166
166
  receiver = Receiver(harvester_connection, dummy_callback) # type:ignore[arg-type]
167
167
 
168
168
  # Create example plot data
169
- path_list = [str(x) for x in range(0, 40)]
169
+ path_list = [str(x) for x in range(40)]
170
170
  plot_info_list = [
171
171
  Plot(
172
172
  filename=str(x),