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
@@ -1,47 +1,49 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import pytest
4
- from chia_rs import AugSchemeMPL
4
+ from chia_rs import AugSchemeMPL, BlockRecord, FullBlock, UnfinishedBlock
5
5
  from chia_rs.sized_bytes import bytes32
6
- from chia_rs.sized_ints import uint8
7
- from clvm.casts import int_to_bytes
6
+ from chia_rs.sized_ints import uint8, uint32, uint64
8
7
 
9
8
  from chia import __version__
10
9
  from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
10
+ from chia._tests.conftest import ConsensusMode
11
11
  from chia._tests.connection_utils import connect_and_get_peer
12
12
  from chia._tests.util.rpc import validate_get_routes
13
+ from chia._tests.util.setup_nodes import SimulatorsAndWalletsServices
13
14
  from chia._tests.util.time_out_assert import time_out_assert
14
- from chia.consensus.block_record import BlockRecord
15
+ from chia.consensus.blockchain import Blockchain
15
16
  from chia.consensus.pot_iterations import is_overflow_block
16
- from chia.full_node.signage_point import SignagePoint
17
+ from chia.consensus.signage_point import SignagePoint
18
+ from chia.full_node.full_node_rpc_api import get_average_block_time, get_nearest_transaction_block
19
+ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
17
20
  from chia.protocols import full_node_protocol
18
- from chia.rpc.full_node_rpc_api import get_average_block_time, get_nearest_transaction_block
19
- from chia.rpc.full_node_rpc_client import FullNodeRpcClient
20
- from chia.server.outbound_message import NodeType
21
+ from chia.protocols.outbound_message import NodeType
21
22
  from chia.simulator.add_blocks_in_batches import add_blocks_in_batches
22
23
  from chia.simulator.block_tools import get_signage_point
23
24
  from chia.simulator.simulator_protocol import FarmNewBlockProtocol, ReorgProtocol
24
25
  from chia.simulator.wallet_tools import WalletTool
25
26
  from chia.types.blockchain_format.coin import Coin
26
- from chia.types.blockchain_format.program import Program
27
- from chia.types.coin_spend import compute_additions
27
+ from chia.types.blockchain_format.serialized_program import SerializedProgram
28
28
  from chia.types.condition_opcodes import ConditionOpcode
29
29
  from chia.types.condition_with_args import ConditionWithArgs
30
- from chia.types.full_block import FullBlock
31
- from chia.types.unfinished_block import UnfinishedBlock
30
+ from chia.util.casts import int_to_bytes
32
31
  from chia.util.hash import std_hash
32
+ from chia.wallet.util.compute_additions import compute_additions
33
33
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
34
34
 
35
35
 
36
36
  @pytest.mark.anyio
37
- async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mode):
37
+ async def test1(
38
+ two_nodes_sim_and_wallets_services: SimulatorsAndWalletsServices, self_hostname: str, consensus_mode: ConsensusMode
39
+ ) -> None:
38
40
  num_blocks = 5
39
41
  nodes, _, bt = two_nodes_sim_and_wallets_services
40
42
  full_node_service_1, full_node_service_2 = nodes
41
43
  full_node_api_1 = full_node_service_1._api
42
44
  full_node_api_2 = full_node_service_2._api
43
45
  server_2 = full_node_api_2.full_node.server
44
-
46
+ assert full_node_service_1.rpc_server is not None
45
47
  async with FullNodeRpcClient.create_as_context(
46
48
  self_hostname,
47
49
  full_node_service_1.rpc_server.listen_port,
@@ -81,14 +83,16 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
81
83
  await full_node_api_1.full_node.add_block(block, None)
82
84
 
83
85
  assert len(await client.get_unfinished_block_headers()) > 0
84
- assert len(await client.get_all_block(0, 2)) == 2
86
+ assert len(await client.get_all_block(uint32(0), uint32(2))) == 2
85
87
  state = await client.get_blockchain_state()
86
88
 
87
- block = await client.get_block(state["peak"].header_hash)
88
- assert block == blocks[-1]
89
- assert (await client.get_block(bytes([1] * 32))) is None
89
+ peak_block = await client.get_block(state["peak"].header_hash)
90
+ assert peak_block == blocks[-1]
91
+ assert (await client.get_block(bytes32([1] * 32))) is None
90
92
 
91
- assert (await client.get_block_record_by_height(2)).header_hash == blocks[2].header_hash
93
+ block_record = await client.get_block_record_by_height(2)
94
+ assert block_record is not None
95
+ assert block_record.header_hash == blocks[2].header_hash
92
96
 
93
97
  assert len(await client.get_block_records(0, 100)) == num_blocks * 2
94
98
 
@@ -161,12 +165,9 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
161
165
  == spend_bundle
162
166
  )
163
167
  assert (await client.get_all_mempool_tx_ids())[0] == spend_bundle.name()
164
- assert (
165
- WalletSpendBundle.from_json_dict(
166
- (await client.get_mempool_item_by_tx_id(spend_bundle.name()))["spend_bundle"]
167
- )
168
- == spend_bundle
169
- )
168
+ mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle.name())
169
+ assert mempool_item is not None
170
+ assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle
170
171
  assert (await client.get_coin_record_by_name(coin.name())) is None
171
172
 
172
173
  # Verify that the include_pending arg to get_mempool_item_by_tx_id works
@@ -180,23 +181,21 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
180
181
  condition_dic=condition_dic,
181
182
  )
182
183
  await client.push_tx(spend_bundle_pending)
183
- assert (
184
- await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), False)
185
- ) is None # not strictly in the mempool
186
- assert (
187
- WalletSpendBundle.from_json_dict(
188
- (await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), True))["spend_bundle"]
189
- )
190
- == spend_bundle_pending # pending entry into mempool, so include_pending fetches
191
- )
184
+ # not strictly in the mempool
185
+ assert (await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), False)) is None
186
+ # pending entry into mempool, so include_pending fetches
187
+ mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), True)
188
+ assert mempool_item is not None
189
+ assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle_pending
192
190
 
193
191
  await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
194
192
 
195
193
  coin_record = await client.get_coin_record_by_name(coin.name())
194
+ assert coin_record is not None
196
195
  assert coin_record.coin == coin
197
- assert coin in compute_additions(
198
- await client.get_puzzle_and_solution(coin.parent_coin_info, coin_record.confirmed_block_index)
199
- )
196
+ coin_spend = await client.get_puzzle_and_solution(coin.parent_coin_info, coin_record.confirmed_block_index)
197
+ assert coin_spend is not None
198
+ assert coin in compute_additions(coin_spend)
200
199
 
201
200
  assert len(await client.get_coin_records_by_puzzle_hash(ph_receiver)) == 1
202
201
  assert len(list(filter(lambda cr: not cr.spent, (await client.get_coin_records_by_puzzle_hash(ph))))) == 3
@@ -225,19 +224,19 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
225
224
  )
226
225
 
227
226
  await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
228
- block: FullBlock = (await full_node_api_1.get_all_full_blocks())[-1]
227
+ block = (await full_node_api_1.get_all_full_blocks())[-1]
229
228
 
230
229
  # since the hard fork, we no longer compress blocks using
231
230
  # block references anymore
232
231
  assert block.transactions_generator_ref_list == []
233
232
 
234
233
  block_spends = await client.get_block_spends(block.header_hash)
235
-
234
+ assert block_spends is not None
236
235
  assert len(block_spends) == 3
237
236
  assert sorted(block_spends, key=str) == sorted(coin_spends, key=str)
238
237
 
239
238
  block_spends_with_conditions = await client.get_block_spends_with_conditions(block.header_hash)
240
-
239
+ assert block_spends_with_conditions is not None
241
240
  assert len(block_spends_with_conditions) == 3
242
241
 
243
242
  block_spends_with_conditions = sorted(block_spends_with_conditions, key=lambda x: str(x.coin_spend))
@@ -247,17 +246,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
247
246
  assert coin_spend_with_conditions.coin_spend.coin == Coin(
248
247
  bytes.fromhex("e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000a"),
249
248
  bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
250
- 1750000000000,
249
+ uint64(1_750_000_000_000),
251
250
  )
252
- assert coin_spend_with_conditions.coin_spend.puzzle_reveal.to_program() == Program.fromhex(
251
+ assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
253
252
  "ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
254
253
  )
255
- assert coin_spend_with_conditions.coin_spend.solution.to_program() == Program.fromhex(
254
+ assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
256
255
  "ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff8601977420dc0080ffff3cffa0a2366d6d8e1ce7496175528f5618a13da8401b02f2bac1eaae8f28aea9ee54798080ff8080"
257
256
  )
258
257
  assert coin_spend_with_conditions.conditions == [
259
258
  ConditionWithArgs(
260
- b"2",
259
+ ConditionOpcode(b"2"),
261
260
  [
262
261
  bytes.fromhex(
263
262
  "a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
@@ -266,14 +265,14 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
266
265
  ],
267
266
  ),
268
267
  ConditionWithArgs(
269
- b"3",
268
+ ConditionOpcode(b"3"),
270
269
  [
271
270
  bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
272
271
  bytes.fromhex("01977420dc00"),
273
272
  ],
274
273
  ),
275
274
  ConditionWithArgs(
276
- b"<",
275
+ ConditionOpcode(b"<"),
277
276
  [
278
277
  bytes.fromhex("a2366d6d8e1ce7496175528f5618a13da8401b02f2bac1eaae8f28aea9ee5479"),
279
278
  ],
@@ -285,17 +284,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
285
284
  assert coin_spend_with_conditions.coin_spend.coin == Coin(
286
285
  bytes.fromhex("e3b0c44298fc1c149afbf4c8996fb9240000000000000000000000000000000b"),
287
286
  bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
288
- 1750000000000,
287
+ uint64(1_750_000_000_000),
289
288
  )
290
- assert coin_spend_with_conditions.coin_spend.puzzle_reveal.to_program() == Program.fromhex(
289
+ assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
291
290
  "ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
292
291
  )
293
- assert coin_spend_with_conditions.coin_spend.solution.to_program() == Program.fromhex(
292
+ assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
294
293
  "ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff8601977420dc0080ffff3cffa04f6d4d12e97e83b2024fd0970e3b9e8a1c2e509625c15ff4145940c45b51974f8080ff8080"
295
294
  )
296
295
  assert coin_spend_with_conditions.conditions == [
297
296
  ConditionWithArgs(
298
- b"2",
297
+ ConditionOpcode(b"2"),
299
298
  [
300
299
  bytes.fromhex(
301
300
  "a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
@@ -304,14 +303,14 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
304
303
  ],
305
304
  ),
306
305
  ConditionWithArgs(
307
- b"3",
306
+ ConditionOpcode(b"3"),
308
307
  [
309
308
  bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
310
309
  bytes.fromhex("01977420dc00"),
311
310
  ],
312
311
  ),
313
312
  ConditionWithArgs(
314
- b"<",
313
+ ConditionOpcode(b"<"),
315
314
  [
316
315
  bytes.fromhex("4f6d4d12e97e83b2024fd0970e3b9e8a1c2e509625c15ff4145940c45b51974f"),
317
316
  ],
@@ -323,17 +322,17 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
323
322
  assert coin_spend_with_conditions.coin_spend.coin == Coin(
324
323
  bytes.fromhex("27ae41e4649b934ca495991b7852b8550000000000000000000000000000000b"),
325
324
  bytes.fromhex("8488947a2213b2c2551fe019bbb708db86eab3dd5133eb57e801515e9e4ad82a"),
326
- 250000000000,
325
+ uint64(250_000_000_000),
327
326
  )
328
- assert coin_spend_with_conditions.coin_spend.puzzle_reveal.to_program() == Program.fromhex(
327
+ assert coin_spend_with_conditions.coin_spend.puzzle_reveal == SerializedProgram.fromhex(
329
328
  "ff02ffff01ff02ffff01ff02ffff03ff0bffff01ff02ffff03ffff09ff05ffff1dff0bffff1effff0bff0bffff02ff06ffff04ff02ffff04ff17ff8080808080808080ffff01ff02ff17ff2f80ffff01ff088080ff0180ffff01ff04ffff04ff04ffff04ff05ffff04ffff02ff06ffff04ff02ffff04ff17ff80808080ff80808080ffff02ff17ff2f808080ff0180ffff04ffff01ff32ff02ffff03ffff07ff0580ffff01ff0bffff0102ffff02ff06ffff04ff02ffff04ff09ff80808080ffff02ff06ffff04ff02ffff04ff0dff8080808080ffff01ff0bffff0101ff058080ff0180ff018080ffff04ffff01b0a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252aff018080"
330
329
  )
331
- assert coin_spend_with_conditions.coin_spend.solution.to_program() == Program.fromhex(
330
+ assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
332
331
  "ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff853a3529440080ffff3cffa0617d9951551dc9e329fcab835f37fe4602c9ea57626cc2069228793f7007716f8080ff8080"
333
332
  )
334
333
  assert coin_spend_with_conditions.conditions == [
335
334
  ConditionWithArgs(
336
- b"2",
335
+ ConditionOpcode(b"2"),
337
336
  [
338
337
  bytes.fromhex(
339
338
  "a499b52c7eba3465c3d74070a25d5ac5f5df25ed07d1c9c0c0509b00140da3e3bb60b584eaa30a1204ec0e5839f1252a"
@@ -342,29 +341,29 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
342
341
  ],
343
342
  ),
344
343
  ConditionWithArgs(
345
- b"3",
344
+ ConditionOpcode(b"3"),
346
345
  [
347
346
  bytes.fromhex("63c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575c"),
348
347
  bytes.fromhex("3a35294400"),
349
348
  ],
350
349
  ),
351
350
  ConditionWithArgs(
352
- b"<",
351
+ ConditionOpcode(b"<"),
353
352
  [
354
353
  bytes.fromhex("617d9951551dc9e329fcab835f37fe4602c9ea57626cc2069228793f7007716f"),
355
354
  ],
356
355
  ),
357
356
  ]
358
357
 
359
- memo = 32 * b"\f"
358
+ memo = bytes32(32 * b"\f")
360
359
 
361
360
  for i in range(2):
362
361
  await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
363
362
 
364
363
  state = await client.get_blockchain_state()
365
- block = await client.get_block(state["peak"].header_hash)
366
-
367
- coin_to_spend = block.get_included_reward_coins()[0]
364
+ peak_block = await client.get_block(state["peak"].header_hash)
365
+ assert peak_block is not None
366
+ coin_to_spend = peak_block.get_included_reward_coins()[0]
368
367
 
369
368
  spend_bundle = wallet.generate_signed_transaction(coin_to_spend.amount, ph_2, coin_to_spend, memo=memo)
370
369
  await client.push_tx(spend_bundle)
@@ -398,9 +397,10 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
398
397
 
399
398
  assert len(await client.get_connections()) == 0
400
399
 
400
+ assert server_2._port is not None
401
401
  await client.open_connection(self_hostname, server_2._port)
402
402
 
403
- async def num_connections():
403
+ async def num_connections() -> int:
404
404
  return len(await client.get_connections())
405
405
 
406
406
  await time_out_assert(10, num_connections, 1)
@@ -411,10 +411,12 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
411
411
  await client.close_connection(connections[0]["node_id"])
412
412
  await time_out_assert(10, num_connections, 0)
413
413
 
414
- blocks: list[FullBlock] = await client.get_blocks(0, 5)
414
+ blocks = await client.get_blocks(0, 5)
415
415
  assert len(blocks) == 5
416
416
 
417
- await full_node_api_1.reorg_from_index_to_new_index(ReorgProtocol(2, 55, bytes([0x2] * 32), None))
417
+ await full_node_api_1.reorg_from_index_to_new_index(
418
+ ReorgProtocol(uint32(2), uint32(55), bytes32([0x2] * 32), None)
419
+ )
418
420
  new_blocks_0: list[FullBlock] = await client.get_blocks(0, 5)
419
421
  assert len(new_blocks_0) == 7
420
422
 
@@ -427,7 +429,9 @@ async def test1(two_nodes_sim_and_wallets_services, self_hostname, consensus_mod
427
429
 
428
430
 
429
431
  @pytest.mark.anyio
430
- async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockchain):
432
+ async def test_signage_points(
433
+ two_nodes_sim_and_wallets_services: SimulatorsAndWalletsServices, empty_blockchain: Blockchain
434
+ ) -> None:
431
435
  nodes, _, bt = two_nodes_sim_and_wallets_services
432
436
  full_node_service_1, full_node_service_2 = nodes
433
437
  full_node_api_1 = full_node_service_1._api
@@ -439,7 +443,7 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
439
443
  self_hostname = config["self_hostname"]
440
444
 
441
445
  peer = await connect_and_get_peer(server_1, server_2, self_hostname)
442
-
446
+ assert full_node_service_1.rpc_server is not None
443
447
  async with FullNodeRpcClient.create_as_context(
444
448
  self_hostname,
445
449
  full_node_service_1.rpc_server.listen_port,
@@ -472,6 +476,7 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
472
476
 
473
477
  # Creates a signage point based on the last block
474
478
  peak_2 = second_blockchain.get_peak()
479
+ assert peak_2 is not None
475
480
  sp: SignagePoint = get_signage_point(
476
481
  bt.constants,
477
482
  blockchain,
@@ -481,7 +486,10 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
481
486
  [],
482
487
  peak_2.sub_slot_iters,
483
488
  )
484
-
489
+ assert sp.cc_proof is not None
490
+ assert sp.cc_vdf is not None
491
+ assert sp.rc_proof is not None
492
+ assert sp.rc_vdf is not None
485
493
  # Don't have SP yet
486
494
  res = await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
487
495
  assert res is None
@@ -550,10 +558,12 @@ async def test_signage_points(two_nodes_sim_and_wallets_services, empty_blockcha
550
558
 
551
559
 
552
560
  @pytest.mark.anyio
553
- async def test_get_network_info(one_wallet_and_one_simulator_services, self_hostname):
561
+ async def test_get_network_info(
562
+ one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
563
+ ) -> None:
554
564
  nodes, _, _bt = one_wallet_and_one_simulator_services
555
565
  (full_node_service_1,) = nodes
556
-
566
+ assert full_node_service_1.rpc_server is not None
557
567
  async with FullNodeRpcClient.create_as_context(
558
568
  self_hostname,
559
569
  full_node_service_1.rpc_server.listen_port,
@@ -571,9 +581,12 @@ async def test_get_network_info(one_wallet_and_one_simulator_services, self_host
571
581
 
572
582
 
573
583
  @pytest.mark.anyio
574
- async def test_get_version(one_wallet_and_one_simulator_services, self_hostname):
584
+ async def test_get_version(
585
+ one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
586
+ ) -> None:
575
587
  nodes, _, _bt = one_wallet_and_one_simulator_services
576
588
  (full_node_service_1,) = nodes
589
+ assert full_node_service_1.rpc_server is not None
577
590
  async with FullNodeRpcClient.create_as_context(
578
591
  self_hostname,
579
592
  full_node_service_1.rpc_server.listen_port,
@@ -588,12 +601,14 @@ async def test_get_version(one_wallet_and_one_simulator_services, self_hostname)
588
601
 
589
602
 
590
603
  @pytest.mark.anyio
591
- async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_hostname):
604
+ async def test_get_blockchain_state(
605
+ one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, self_hostname: str
606
+ ) -> None:
592
607
  num_blocks = 5
593
608
  nodes, _, bt = one_wallet_and_one_simulator_services
594
609
  (full_node_service_1,) = nodes
595
610
  full_node_api_1 = full_node_service_1._api
596
-
611
+ assert full_node_service_1.rpc_server is not None
597
612
  try:
598
613
  client = await FullNodeRpcClient.create(
599
614
  self_hostname,
@@ -633,9 +648,11 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
633
648
  assert state["space"] > 0
634
649
  assert state["average_block_time"] > 0
635
650
 
636
- block_records: list[BlockRecord] = [
637
- await full_node_api_1.full_node.blockchain.get_block_record_from_db(rec.header_hash) for rec in blocks
638
- ]
651
+ block_records = []
652
+ for rec in blocks:
653
+ record = await full_node_api_1.full_node.blockchain.get_block_record_from_db(rec.header_hash)
654
+ if record is not None:
655
+ block_records.append(record)
639
656
  first_non_transaction_block_index = -1
640
657
  for i, b in enumerate(block_records):
641
658
  if not b.is_transaction_block:
@@ -673,9 +690,9 @@ async def test_get_blockchain_state(one_wallet_and_one_simulator_services, self_
673
690
 
674
691
 
675
692
  @pytest.mark.anyio
676
- async def test_coin_name_not_in_request(one_node, self_hostname):
693
+ async def test_coin_name_not_in_request(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
677
694
  [full_node_service], _, _ = one_node
678
-
695
+ assert full_node_service.rpc_server is not None
679
696
  async with FullNodeRpcClient.create_as_context(
680
697
  self_hostname,
681
698
  full_node_service.rpc_server.listen_port,
@@ -687,9 +704,9 @@ async def test_coin_name_not_in_request(one_node, self_hostname):
687
704
 
688
705
 
689
706
  @pytest.mark.anyio
690
- async def test_coin_name_not_found_in_mempool(one_node, self_hostname):
707
+ async def test_coin_name_not_found_in_mempool(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
691
708
  [full_node_service], _, _ = one_node
692
-
709
+ assert full_node_service.rpc_server is not None
693
710
  async with FullNodeRpcClient.create_as_context(
694
711
  self_hostname,
695
712
  full_node_service.rpc_server.listen_port,
@@ -704,10 +721,10 @@ async def test_coin_name_not_found_in_mempool(one_node, self_hostname):
704
721
 
705
722
 
706
723
  @pytest.mark.anyio
707
- async def test_coin_name_found_in_mempool(one_node, self_hostname):
724
+ async def test_coin_name_found_in_mempool(one_node: SimulatorsAndWalletsServices, self_hostname: str) -> None:
708
725
  [full_node_service], _, bt = one_node
709
726
  full_node_api = full_node_service._api
710
-
727
+ assert full_node_service.rpc_server is not None
711
728
  async with FullNodeRpcClient.create_as_context(
712
729
  self_hostname,
713
730
  full_node_service.rpc_server.listen_port,
@@ -12,9 +12,9 @@ from chia.types.blockchain_format.serialized_program import SerializedProgram
12
12
  def program_roundtrip(o: CastableType) -> None:
13
13
  prg1 = Program.to(o)
14
14
  prg2 = SerializedProgram.to(o)
15
- prg3 = SerializedProgram.from_program(prg1)
15
+ prg3 = prg1.to_serialized()
16
16
  prg4 = SerializedProgram.from_bytes(prg1.as_bin())
17
- prg5 = prg2.to_program()
17
+ prg5 = Program.from_serialized(prg2)
18
18
 
19
19
  assert bytes(prg1) == bytes(prg2)
20
20
  assert bytes(prg1) == bytes(prg3)
@@ -4,10 +4,10 @@ import random
4
4
  from dataclasses import dataclass
5
5
 
6
6
  import pytest
7
+ from chia_rs import BlockRecord
7
8
  from chia_rs.sized_bytes import bytes32
8
9
  from chia_rs.sized_ints import uint32
9
10
 
10
- from chia.consensus.block_record import BlockRecord
11
11
  from chia.util.block_cache import BlockCache
12
12
 
13
13
 
@@ -355,7 +355,7 @@ async def test_get_key(include_secrets: bool, get_temp_keyring: Keychain):
355
355
  keychain: Keychain = get_temp_keyring
356
356
  expected_keys = []
357
357
  # Add 10 keys and validate the result `get_key` for each of them after each addition
358
- for _ in range(0, 10):
358
+ for _ in range(10):
359
359
  key_data = KeyData.generate()
360
360
  mnemonic_str = key_data.mnemonic_str()
361
361
  if not include_secrets:
@@ -385,7 +385,7 @@ async def test_get_keys(include_secrets: bool, get_temp_keyring: Keychain):
385
385
  assert keychain.get_keys(include_secrets) == []
386
386
  expected_keys = []
387
387
  # Add 10 keys and validate the result of `get_keys` after each addition
388
- for _ in range(0, 10):
388
+ for _ in range(10):
389
389
  key_data = KeyData.generate()
390
390
  mnemonic_str = key_data.mnemonic_str()
391
391
  if not include_secrets:
@@ -75,7 +75,7 @@ def child_writer_dispatch_with_readiness_check(
75
75
  except LockfileError:
76
76
  attempts -= 1
77
77
  if attempts == 0:
78
- raise LockfileError()
78
+ raise LockfileError
79
79
  except Exception as e:
80
80
  log.warning(
81
81
  f"[pid:{os.getpid()}] caught exception in child_writer_dispatch_with_readiness_check: "
@@ -41,7 +41,7 @@ def test_consumes_exception(
41
41
  caplog: pytest.LogCaptureFixture,
42
42
  ) -> None:
43
43
  with log_exceptions(log=logger, consume=True):
44
- raise Exception()
44
+ raise Exception
45
45
 
46
46
 
47
47
  def test_propagates_exception(
@@ -67,7 +67,7 @@ def test_passed_message_is_used(
67
67
  caplog: pytest.LogCaptureFixture,
68
68
  ) -> None:
69
69
  with log_exceptions(log=logger, consume=True, message=log_message):
70
- raise Exception()
70
+ raise Exception
71
71
 
72
72
  assert len(caplog.records) == 1, caplog.records
73
73
 
@@ -87,7 +87,7 @@ def test_specified_level_is_used(
87
87
  ) -> None:
88
88
  caplog.set_level(min(all_levels.values()))
89
89
  with log_exceptions(level=level, log=logger, consume=True):
90
- raise Exception()
90
+ raise Exception
91
91
 
92
92
  assert len(caplog.records) == 1, caplog.records
93
93
 
@@ -100,7 +100,7 @@ def test_traceback_is_logged(
100
100
  caplog: pytest.LogCaptureFixture,
101
101
  ) -> None:
102
102
  with log_exceptions(log=logger, consume=True, show_traceback=True):
103
- raise Exception()
103
+ raise Exception
104
104
 
105
105
  assert len(caplog.records) == 1, caplog.records
106
106
 
@@ -113,7 +113,7 @@ def test_traceback_is_not_logged(
113
113
  caplog: pytest.LogCaptureFixture,
114
114
  ) -> None:
115
115
  with log_exceptions(log=logger, consume=True, show_traceback=False):
116
- raise Exception()
116
+ raise Exception
117
117
 
118
118
  assert len(caplog.records) == 1, caplog.records
119
119