chia-blockchain 2.5.2rc2__py3-none-any.whl → 2.5.3rc1__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 (640) hide show
  1. chia/__init__.py +7 -0
  2. chia/_tests/blockchain/blockchain_test_utils.py +1 -1
  3. chia/_tests/blockchain/test_augmented_chain.py +54 -5
  4. chia/_tests/blockchain/test_blockchain.py +5 -12
  5. chia/_tests/blockchain/test_blockchain_transactions.py +3 -5
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -2
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +2 -2
  8. chia/_tests/clvm/benchmark_costs.py +2 -1
  9. chia/_tests/clvm/coin_store.py +4 -3
  10. chia/_tests/clvm/test_chialisp_deserialization.py +2 -2
  11. chia/_tests/clvm/test_curry_and_treehash.py +1 -1
  12. chia/_tests/clvm/test_puzzle_compression.py +2 -2
  13. chia/_tests/clvm/test_puzzles.py +2 -2
  14. chia/_tests/clvm/test_singletons.py +2 -2
  15. chia/_tests/clvm/test_spend_sim.py +1 -1
  16. chia/_tests/cmds/cmd_test_utils.py +2 -2
  17. chia/_tests/cmds/test_click_types.py +2 -2
  18. chia/_tests/cmds/test_cmd_framework.py +6 -6
  19. chia/_tests/cmds/test_show.py +4 -3
  20. chia/_tests/cmds/test_tx_config_args.py +1 -1
  21. chia/_tests/cmds/testing_classes.py +2 -2
  22. chia/_tests/cmds/wallet/test_consts.py +2 -2
  23. chia/_tests/cmds/wallet/test_did.py +2 -2
  24. chia/_tests/cmds/wallet/test_nft.py +2 -2
  25. chia/_tests/cmds/wallet/test_notifications.py +3 -2
  26. chia/_tests/cmds/wallet/test_vcs.py +2 -2
  27. chia/_tests/cmds/wallet/test_wallet.py +4 -8
  28. chia/_tests/conftest.py +4 -3
  29. chia/_tests/connection_utils.py +2 -2
  30. chia/_tests/core/cmds/test_keys.py +1 -2
  31. chia/_tests/core/cmds/test_wallet.py +2 -2
  32. chia/_tests/core/consensus/test_block_creation.py +2 -2
  33. chia/_tests/core/consensus/test_pot_iterations.py +1 -1
  34. chia/_tests/core/custom_types/test_coin.py +2 -2
  35. chia/_tests/core/custom_types/test_proof_of_space.py +2 -2
  36. chia/_tests/core/custom_types/test_spend_bundle.py +2 -2
  37. chia/_tests/core/data_layer/conftest.py +1 -1
  38. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  39. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  40. chia/_tests/core/data_layer/test_data_rpc.py +2 -2
  41. chia/_tests/core/data_layer/test_data_store.py +1 -1
  42. chia/_tests/core/data_layer/test_data_store_schema.py +1 -1
  43. chia/_tests/core/data_layer/util.py +2 -1
  44. chia/_tests/core/farmer/test_farmer_api.py +1 -1
  45. chia/_tests/core/full_node/full_sync/test_full_sync.py +1 -7
  46. chia/_tests/core/full_node/ram_db.py +2 -1
  47. chia/_tests/core/full_node/stores/test_block_store.py +2 -2
  48. chia/_tests/core/full_node/stores/test_coin_store.py +2 -2
  49. chia/_tests/core/full_node/stores/test_full_node_store.py +3 -3
  50. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  51. chia/_tests/core/full_node/stores/test_sync_store.py +1 -1
  52. chia/_tests/core/full_node/test_address_manager.py +1 -1
  53. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  54. chia/_tests/core/full_node/test_conditions.py +1 -1
  55. chia/_tests/core/full_node/test_full_node.py +346 -164
  56. chia/_tests/core/full_node/test_generator_tools.py +3 -2
  57. chia/_tests/core/full_node/test_hint_management.py +2 -2
  58. chia/_tests/core/full_node/test_performance.py +2 -15
  59. chia/_tests/core/full_node/test_subscriptions.py +1 -1
  60. chia/_tests/core/full_node/test_transactions.py +186 -185
  61. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -1
  62. chia/_tests/core/make_block_generator.py +2 -2
  63. chia/_tests/core/mempool/test_mempool.py +165 -22
  64. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  65. chia/_tests/core/mempool/test_mempool_fee_protocol.py +1 -1
  66. chia/_tests/core/mempool/test_mempool_manager.py +476 -66
  67. chia/_tests/core/mempool/test_mempool_performance.py +2 -2
  68. chia/_tests/core/mempool/test_singleton_fast_forward.py +19 -25
  69. chia/_tests/core/node_height.py +2 -1
  70. chia/_tests/core/server/test_capabilities.py +1 -1
  71. chia/_tests/core/server/test_dos.py +36 -28
  72. chia/_tests/core/server/test_loop.py +3 -3
  73. chia/_tests/core/server/test_rate_limits.py +1 -1
  74. chia/_tests/core/server/test_server.py +2 -2
  75. chia/_tests/core/services/test_services.py +1 -1
  76. chia/_tests/core/ssl/test_ssl.py +1 -1
  77. chia/_tests/core/test_coins.py +2 -1
  78. chia/_tests/core/test_cost_calculation.py +2 -2
  79. chia/_tests/core/test_crawler.py +2 -2
  80. chia/_tests/core/test_db_conversion.py +2 -2
  81. chia/_tests/core/test_db_validation.py +26 -13
  82. chia/_tests/core/test_farmer_harvester_rpc.py +2 -2
  83. chia/_tests/core/test_full_node_rpc.py +2 -2
  84. chia/_tests/core/test_merkle_set.py +2 -2
  85. chia/_tests/core/test_program.py +2 -2
  86. chia/_tests/core/test_rpc_util.py +1 -1
  87. chia/_tests/core/test_seeder.py +1 -1
  88. chia/_tests/core/util/test_block_cache.py +3 -3
  89. chia/_tests/core/util/test_jsonify.py +3 -2
  90. chia/_tests/core/util/test_keychain.py +3 -3
  91. chia/_tests/core/util/test_streamable.py +3 -4
  92. chia/_tests/environments/wallet.py +3 -2
  93. chia/_tests/farmer_harvester/test_farmer.py +3 -4
  94. chia/_tests/farmer_harvester/test_farmer_harvester.py +2 -2
  95. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +2 -2
  96. chia/_tests/farmer_harvester/test_third_party_harvesters.py +3 -4
  97. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -1
  98. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +2 -2
  99. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  100. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +3 -4
  101. chia/_tests/generator/test_compression.py +20 -10
  102. chia/_tests/generator/test_rom.py +7 -9
  103. chia/_tests/plot_sync/test_delta.py +2 -2
  104. chia/_tests/plot_sync/test_plot_sync.py +2 -2
  105. chia/_tests/plot_sync/test_receiver.py +2 -2
  106. chia/_tests/plot_sync/test_sender.py +2 -2
  107. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  108. chia/_tests/plot_sync/util.py +3 -2
  109. chia/_tests/plotting/test_plot_manager.py +1 -1
  110. chia/_tests/pools/test_pool_cli_parsing.py +3 -2
  111. chia/_tests/pools/test_pool_cmdline.py +2 -2
  112. chia/_tests/pools/test_pool_puzzles_lifecycle.py +3 -3
  113. chia/_tests/pools/test_pool_rpc.py +4 -5
  114. chia/_tests/pools/test_pool_wallet.py +1 -1
  115. chia/_tests/pools/test_wallet_pool_store.py +2 -2
  116. chia/_tests/rpc/test_rpc_client.py +1 -1
  117. chia/_tests/rpc/test_rpc_server.py +1 -1
  118. chia/_tests/simulation/test_simulation.py +36 -8
  119. chia/_tests/simulation/test_simulator.py +5 -5
  120. chia/_tests/simulation/test_start_simulator.py +2 -2
  121. chia/_tests/timelord/test_new_peak.py +2 -2
  122. chia/_tests/tools/test_run_block.py +3 -2
  123. chia/_tests/util/benchmark_cost.py +2 -2
  124. chia/_tests/util/benchmarks.py +17 -6
  125. chia/_tests/util/blockchain.py +2 -1
  126. chia/_tests/util/blockchain_mock.py +9 -5
  127. chia/_tests/util/build_network_protocol_files.py +2 -1
  128. chia/_tests/util/constants.py +2 -1
  129. chia/_tests/util/full_sync.py +6 -3
  130. chia/_tests/util/gen_ssl_certs.py +2 -2
  131. chia/_tests/util/generator_tools_testing.py +4 -3
  132. chia/_tests/util/get_name_puzzle_conditions.py +2 -2
  133. chia/_tests/util/misc.py +16 -2
  134. chia/_tests/util/network_protocol_data.py +17 -7
  135. chia/_tests/util/run_block.py +6 -8
  136. chia/_tests/util/setup_nodes.py +4 -3
  137. chia/_tests/util/spend_sim.py +9 -5
  138. chia/_tests/util/test_condition_tools.py +2 -2
  139. chia/_tests/util/test_config.py +2 -1
  140. chia/_tests/util/test_errors.py +2 -1
  141. chia/_tests/util/test_full_block_utils.py +17 -7
  142. chia/_tests/util/test_misc.py +1 -1
  143. chia/_tests/util/test_network_protocol_test.py +24 -24
  144. chia/_tests/util/test_replace_str_to_bytes.py +2 -2
  145. chia/_tests/util/test_trusted_peer.py +1 -1
  146. chia/_tests/util/time_out_assert.py +20 -7
  147. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  148. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -2
  149. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +5 -6
  150. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +17 -15
  151. chia/_tests/wallet/cat_wallet/test_trades.py +2 -2
  152. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -2
  153. chia/_tests/wallet/clawback/test_clawback_metadata.py +2 -2
  154. chia/_tests/wallet/conftest.py +3 -3
  155. chia/_tests/wallet/db_wallet/test_db_graftroot.py +3 -5
  156. chia/_tests/wallet/db_wallet/test_dl_offers.py +2 -2
  157. chia/_tests/wallet/db_wallet/test_dl_wallet.py +433 -384
  158. chia/_tests/wallet/did_wallet/test_did.py +3 -3
  159. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +2 -2
  160. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +2 -2
  161. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +3 -4
  162. chia/_tests/wallet/nft_wallet/test_nft_offers.py +1293 -703
  163. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +28 -30
  164. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2 -2
  165. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +2 -2
  166. chia/_tests/wallet/rpc/config.py +1 -1
  167. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +2 -2
  168. chia/_tests/wallet/rpc/test_wallet_rpc.py +20 -77
  169. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +9 -7
  170. chia/_tests/wallet/sync/test_wallet_sync.py +79 -31
  171. chia/_tests/wallet/test_clvm_streamable.py +2 -2
  172. chia/_tests/wallet/test_coin_management.py +7 -7
  173. chia/_tests/wallet/test_coin_selection.py +20 -2
  174. chia/_tests/wallet/test_conditions.py +2 -2
  175. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  176. chia/_tests/wallet/test_new_wallet_protocol.py +2 -2
  177. chia/_tests/wallet/test_nft_store.py +2 -2
  178. chia/_tests/wallet/test_notifications.py +2 -2
  179. chia/_tests/wallet/test_puzzle_store.py +2 -2
  180. chia/_tests/wallet/test_sign_coin_spends.py +2 -2
  181. chia/_tests/wallet/test_signer_protocol.py +3 -3
  182. chia/_tests/wallet/test_singleton.py +3 -11
  183. chia/_tests/wallet/test_singleton_lifecycle_fast.py +12 -13
  184. chia/_tests/wallet/test_singleton_store.py +2 -4
  185. chia/_tests/wallet/test_transaction_store.py +2 -2
  186. chia/_tests/wallet/test_util.py +2 -2
  187. chia/_tests/wallet/test_wallet.py +53 -49
  188. chia/_tests/wallet/test_wallet_action_scope.py +24 -6
  189. chia/_tests/wallet/test_wallet_blockchain.py +1 -1
  190. chia/_tests/wallet/test_wallet_coin_store.py +2 -2
  191. chia/_tests/wallet/test_wallet_interested_store.py +2 -2
  192. chia/_tests/wallet/test_wallet_node.py +3 -3
  193. chia/_tests/wallet/test_wallet_retry.py +3 -3
  194. chia/_tests/wallet/test_wallet_state_manager.py +8 -8
  195. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  196. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  197. chia/_tests/wallet/test_wallet_utils.py +2 -2
  198. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -2
  199. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +15 -15
  200. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +5 -3
  201. chia/_tests/wallet/wallet_block_tools.py +15 -7
  202. chia/_tests/weight_proof/test_weight_proof.py +3 -3
  203. chia/cmds/chia.py +0 -2
  204. chia/cmds/cmd_classes.py +3 -3
  205. chia/cmds/cmd_helpers.py +4 -4
  206. chia/cmds/cmds_util.py +2 -2
  207. chia/cmds/coin_funcs.py +3 -2
  208. chia/cmds/coins.py +1 -1
  209. chia/cmds/data.py +2 -2
  210. chia/cmds/data_funcs.py +3 -2
  211. chia/cmds/db_upgrade_func.py +2 -2
  212. chia/cmds/db_validate_func.py +15 -8
  213. chia/cmds/farm.py +2 -4
  214. chia/cmds/keys.py +0 -2
  215. chia/cmds/keys_funcs.py +1 -1
  216. chia/cmds/netspace_funcs.py +2 -1
  217. chia/cmds/param_types.py +2 -2
  218. chia/cmds/plotnft.py +2 -2
  219. chia/cmds/plotnft_funcs.py +2 -2
  220. chia/cmds/rpc.py +1 -1
  221. chia/cmds/show.py +1 -2
  222. chia/cmds/show_funcs.py +6 -3
  223. chia/cmds/signer.py +1 -2
  224. chia/cmds/sim.py +1 -2
  225. chia/cmds/sim_funcs.py +2 -2
  226. chia/cmds/wallet.py +2 -2
  227. chia/cmds/wallet_funcs.py +4 -11
  228. chia/consensus/block_body_validation.py +3 -4
  229. chia/consensus/block_creation.py +10 -6
  230. chia/consensus/block_header_validation.py +3 -4
  231. chia/consensus/block_record.py +2 -3
  232. chia/consensus/block_rewards.py +1 -1
  233. chia/consensus/blockchain.py +20 -17
  234. chia/consensus/blockchain_interface.py +5 -4
  235. chia/consensus/coinbase.py +2 -2
  236. chia/consensus/constants.py +1 -1
  237. chia/consensus/cost_calculator.py +2 -1
  238. chia/consensus/default_constants.py +4 -3
  239. chia/consensus/deficit.py +3 -2
  240. chia/consensus/difficulty_adjustment.py +8 -9
  241. chia/consensus/find_fork_point.py +4 -3
  242. chia/consensus/full_block_to_block_record.py +4 -3
  243. chia/consensus/get_block_challenge.py +4 -3
  244. chia/consensus/get_block_generator.py +3 -2
  245. chia/consensus/make_sub_epoch_summary.py +3 -2
  246. chia/consensus/multiprocess_validation.py +9 -4
  247. chia/consensus/pos_quality.py +1 -1
  248. chia/consensus/pot_iterations.py +4 -3
  249. chia/consensus/vdf_info_computation.py +4 -3
  250. chia/daemon/client.py +1 -1
  251. chia/daemon/keychain_server.py +1 -1
  252. chia/daemon/server.py +1 -1
  253. chia/daemon/windows_signal.py +1 -1
  254. chia/data_layer/data_layer.py +4 -3
  255. chia/data_layer/data_layer_errors.py +1 -1
  256. chia/data_layer/data_layer_util.py +2 -2
  257. chia/data_layer/data_layer_wallet.py +47 -69
  258. chia/data_layer/data_store.py +1 -1
  259. chia/data_layer/dl_wallet_store.py +5 -6
  260. chia/data_layer/download_data.py +1 -1
  261. chia/data_layer/s3_plugin_service.py +4 -4
  262. chia/data_layer/singleton_record.py +23 -0
  263. chia/data_layer/util/benchmark.py +2 -1
  264. chia/farmer/farmer.py +4 -6
  265. chia/farmer/farmer_api.py +4 -6
  266. chia/full_node/bitcoin_fee_estimator.py +2 -1
  267. chia/full_node/block_height_map.py +2 -2
  268. chia/full_node/block_store.py +8 -9
  269. chia/{util → full_node}/check_fork_next_block.py +2 -1
  270. chia/full_node/coin_store.py +10 -10
  271. chia/full_node/fee_estimate.py +2 -1
  272. chia/full_node/fee_estimation.py +2 -1
  273. chia/full_node/fee_estimator.py +2 -1
  274. chia/full_node/fee_estimator_interface.py +1 -1
  275. chia/full_node/fee_history.py +2 -1
  276. chia/full_node/fee_tracker.py +2 -1
  277. chia/full_node/full_node.py +15 -13
  278. chia/full_node/full_node_api.py +12 -32
  279. chia/full_node/full_node_store.py +4 -3
  280. chia/full_node/hint_management.py +2 -1
  281. chia/full_node/hint_store.py +3 -3
  282. chia/full_node/mempool.py +79 -12
  283. chia/full_node/mempool_check_conditions.py +6 -7
  284. chia/full_node/mempool_manager.py +168 -21
  285. chia/full_node/pending_tx_cache.py +2 -2
  286. chia/full_node/subscriptions.py +2 -2
  287. chia/full_node/sync_store.py +2 -3
  288. chia/full_node/tx_processing_queue.py +2 -1
  289. chia/full_node/weight_proof.py +5 -8
  290. chia/harvester/harvester.py +5 -3
  291. chia/harvester/harvester_api.py +2 -2
  292. chia/introducer/introducer.py +30 -2
  293. chia/introducer/introducer_api.py +9 -1
  294. chia/legacy/keyring.py +1 -2
  295. chia/plot_sync/exceptions.py +2 -1
  296. chia/plot_sync/receiver.py +2 -2
  297. chia/plot_sync/sender.py +1 -1
  298. chia/plotting/cache.py +2 -2
  299. chia/plotting/check_plots.py +4 -2
  300. chia/plotting/create_plots.py +1 -1
  301. chia/plotting/manager.py +3 -3
  302. chia/plotting/util.py +2 -2
  303. chia/pools/pool_config.py +1 -1
  304. chia/pools/pool_puzzles.py +23 -17
  305. chia/pools/pool_wallet.py +22 -9
  306. chia/pools/pool_wallet_info.py +2 -2
  307. chia/protocols/farmer_protocol.py +3 -6
  308. chia/protocols/full_node_protocol.py +3 -2
  309. chia/protocols/harvester_protocol.py +3 -4
  310. chia/protocols/pool_protocol.py +2 -2
  311. chia/protocols/shared_protocol.py +2 -1
  312. chia/protocols/timelord_protocol.py +4 -4
  313. chia/protocols/wallet_protocol.py +2 -2
  314. chia/rpc/data_layer_rpc_api.py +3 -4
  315. chia/rpc/data_layer_rpc_client.py +3 -2
  316. chia/rpc/farmer_rpc_api.py +2 -2
  317. chia/rpc/farmer_rpc_client.py +2 -1
  318. chia/rpc/full_node_rpc_api.py +3 -2
  319. chia/rpc/full_node_rpc_client.py +3 -2
  320. chia/rpc/harvester_rpc_api.py +2 -1
  321. chia/rpc/rpc_client.py +2 -2
  322. chia/rpc/rpc_server.py +1 -1
  323. chia/rpc/wallet_request_types.py +2 -62
  324. chia/rpc/wallet_rpc_api.py +98 -628
  325. chia/rpc/wallet_rpc_client.py +5 -253
  326. chia/seeder/crawl_store.py +1 -1
  327. chia/seeder/crawler.py +2 -2
  328. chia/seeder/peer_record.py +2 -1
  329. chia/seeder/start_crawler.py +3 -1
  330. chia/server/address_manager.py +2 -1
  331. chia/server/address_manager_store.py +1 -1
  332. chia/server/capabilities.py +2 -1
  333. chia/server/introducer_peers.py +2 -1
  334. chia/server/node_discovery.py +1 -1
  335. chia/server/outbound_message.py +2 -1
  336. chia/server/server.py +2 -2
  337. chia/server/start_data_layer.py +2 -1
  338. chia/server/start_farmer.py +3 -1
  339. chia/server/start_full_node.py +4 -2
  340. chia/server/start_harvester.py +3 -1
  341. chia/server/start_introducer.py +12 -1
  342. chia/server/start_service.py +2 -1
  343. chia/server/start_timelord.py +3 -1
  344. chia/server/start_wallet.py +3 -1
  345. chia/server/upnp.py +1 -2
  346. chia/server/ws_connection.py +3 -4
  347. chia/simulator/add_blocks_in_batches.py +5 -3
  348. chia/simulator/block_tools.py +16 -12
  349. chia/simulator/full_node_simulator.py +9 -14
  350. chia/simulator/setup_services.py +5 -3
  351. chia/simulator/simulator_full_node_rpc_api.py +3 -2
  352. chia/simulator/simulator_full_node_rpc_client.py +3 -2
  353. chia/simulator/simulator_protocol.py +3 -2
  354. chia/simulator/simulator_test_tools.py +2 -2
  355. chia/simulator/start_simulator.py +3 -2
  356. chia/simulator/wallet_tools.py +3 -4
  357. chia/timelord/iters_from_block.py +4 -4
  358. chia/timelord/timelord.py +7 -12
  359. chia/timelord/timelord_api.py +3 -3
  360. chia/timelord/timelord_state.py +4 -3
  361. chia/types/block_protocol.py +2 -2
  362. chia/types/blockchain_format/coin.py +2 -2
  363. chia/types/blockchain_format/program.py +1 -1
  364. chia/types/blockchain_format/proof_of_space.py +3 -4
  365. chia/types/blockchain_format/tree_hash.py +1 -1
  366. chia/types/blockchain_format/vdf.py +3 -4
  367. chia/types/clvm_cost.py +1 -1
  368. chia/types/coin_record.py +4 -3
  369. chia/types/coin_spend.py +1 -1
  370. chia/types/eligible_coin_spends.py +9 -5
  371. chia/types/fee_rate.py +1 -1
  372. chia/types/generator_types.py +3 -3
  373. chia/types/internal_mempool_item.py +3 -2
  374. chia/types/mempool_item.py +10 -3
  375. chia/types/mempool_submission_status.py +2 -1
  376. chia/types/mojos.py +1 -1
  377. chia/types/peer_info.py +2 -1
  378. chia/types/transaction_queue_entry.py +2 -1
  379. chia/types/unfinished_header_block.py +4 -4
  380. chia/types/validation_state.py +2 -1
  381. chia/types/weight_proof.py +1 -9
  382. chia/util/augmented_chain.py +20 -9
  383. chia/util/block_cache.py +8 -4
  384. chia/util/condition_tools.py +2 -2
  385. chia/util/full_block_utils.py +3 -4
  386. chia/util/generator_tools.py +2 -2
  387. chia/util/initial-config.yaml +2 -11
  388. chia/util/network.py +2 -2
  389. chia/util/prev_transaction_block.py +2 -1
  390. chia/util/task_timing.py +1 -1
  391. chia/util/vdf_prover.py +3 -3
  392. chia/util/ws_message.py +1 -1
  393. chia/wallet/cat_wallet/cat_info.py +3 -2
  394. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -2
  395. chia/wallet/cat_wallet/cat_utils.py +6 -4
  396. chia/wallet/cat_wallet/cat_wallet.py +16 -18
  397. chia/wallet/cat_wallet/lineage_store.py +2 -1
  398. chia/wallet/coin_selection.py +5 -5
  399. chia/wallet/conditions.py +22 -16
  400. chia/wallet/db_wallet/db_wallet_puzzles.py +15 -15
  401. chia/wallet/derivation_record.py +2 -2
  402. chia/wallet/derive_keys.py +2 -2
  403. chia/wallet/did_wallet/did_info.py +3 -2
  404. chia/wallet/did_wallet/did_wallet.py +41 -19
  405. chia/wallet/did_wallet/did_wallet_puzzles.py +18 -12
  406. chia/wallet/driver_protocol.py +1 -1
  407. chia/wallet/lineage_proof.py +3 -2
  408. chia/wallet/nft_wallet/metadata_outer_puzzle.py +6 -7
  409. chia/wallet/nft_wallet/nft_info.py +5 -5
  410. chia/wallet/nft_wallet/nft_puzzle_utils.py +293 -0
  411. chia/wallet/nft_wallet/nft_puzzles.py +21 -298
  412. chia/wallet/nft_wallet/nft_wallet.py +47 -62
  413. chia/wallet/nft_wallet/ownership_outer_puzzle.py +4 -8
  414. chia/wallet/nft_wallet/singleton_outer_puzzle.py +3 -2
  415. chia/wallet/nft_wallet/transfer_program_puzzle.py +6 -10
  416. chia/wallet/nft_wallet/uncurry_nft.py +6 -8
  417. chia/wallet/notification_manager.py +5 -5
  418. chia/wallet/notification_store.py +3 -2
  419. chia/wallet/outer_puzzles.py +2 -1
  420. chia/wallet/puzzles/clawback/drivers.py +21 -8
  421. chia/wallet/puzzles/clawback/metadata.py +3 -2
  422. chia/wallet/puzzles/clawback/puzzle_decorator.py +5 -4
  423. chia/wallet/puzzles/deployed_puzzle_hashes.json +0 -10
  424. chia/wallet/puzzles/p2_conditions.py +3 -2
  425. chia/wallet/puzzles/p2_delegated_conditions.py +3 -2
  426. chia/wallet/puzzles/p2_delegated_puzzle.py +3 -2
  427. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -3
  428. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +3 -2
  429. chia/wallet/puzzles/p2_puzzle_hash.py +4 -3
  430. chia/wallet/puzzles/puzzle_utils.py +3 -2
  431. chia/wallet/puzzles/singleton_top_layer.py +26 -10
  432. chia/wallet/puzzles/singleton_top_layer_v1_1.py +21 -9
  433. chia/wallet/puzzles/tails.py +21 -129
  434. chia/wallet/signer_protocol.py +3 -2
  435. chia/wallet/singleton.py +12 -6
  436. chia/wallet/singleton_record.py +3 -2
  437. chia/wallet/trade_manager.py +31 -55
  438. chia/wallet/trade_record.py +3 -2
  439. chia/wallet/trading/offer.py +14 -13
  440. chia/wallet/trading/trade_store.py +3 -4
  441. chia/wallet/transaction_record.py +2 -2
  442. chia/wallet/util/blind_signer_tl.py +3 -2
  443. chia/wallet/util/compute_hints.py +3 -2
  444. chia/wallet/util/compute_memos.py +2 -2
  445. chia/wallet/util/curry_and_treehash.py +1 -2
  446. chia/wallet/util/merkle_tree.py +1 -1
  447. chia/wallet/util/merkle_utils.py +1 -1
  448. chia/wallet/util/new_peak_queue.py +2 -1
  449. chia/wallet/util/notifications.py +5 -4
  450. chia/wallet/util/peer_request_cache.py +3 -2
  451. chia/wallet/util/puzzle_compression.py +6 -4
  452. chia/wallet/util/puzzle_decorator.py +6 -4
  453. chia/wallet/util/query_filter.py +3 -2
  454. chia/wallet/util/tx_config.py +3 -3
  455. chia/wallet/util/wallet_sync_utils.py +2 -2
  456. chia/wallet/util/wallet_types.py +2 -3
  457. chia/wallet/vc_wallet/cr_cat_drivers.py +18 -22
  458. chia/wallet/vc_wallet/cr_cat_wallet.py +14 -10
  459. chia/wallet/vc_wallet/cr_outer_puzzle.py +2 -2
  460. chia/wallet/vc_wallet/vc_drivers.py +50 -68
  461. chia/wallet/vc_wallet/vc_store.py +2 -2
  462. chia/wallet/vc_wallet/vc_wallet.py +47 -15
  463. chia/wallet/wallet.py +51 -46
  464. chia/wallet/wallet_action_scope.py +4 -0
  465. chia/wallet/wallet_blockchain.py +12 -7
  466. chia/wallet/wallet_coin_record.py +3 -2
  467. chia/wallet/wallet_coin_store.py +3 -2
  468. chia/wallet/wallet_info.py +2 -1
  469. chia/wallet/wallet_interested_store.py +3 -2
  470. chia/wallet/wallet_nft_store.py +4 -4
  471. chia/wallet/wallet_node.py +3 -4
  472. chia/wallet/wallet_pool_store.py +3 -4
  473. chia/wallet/wallet_protocol.py +19 -5
  474. chia/wallet/wallet_puzzle_store.py +2 -2
  475. chia/wallet/wallet_retry_store.py +3 -6
  476. chia/wallet/wallet_singleton_store.py +2 -2
  477. chia/wallet/wallet_state_manager.py +20 -197
  478. chia/wallet/wallet_transaction_store.py +2 -2
  479. chia/wallet/wallet_user_store.py +2 -1
  480. chia/wallet/wallet_weight_proof_handler.py +3 -2
  481. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/METADATA +3 -2
  482. chia_blockchain-2.5.3rc1.dist-info/RECORD +891 -0
  483. mozilla-ca/cacert.pem +64 -33
  484. chia/_tests/clvm/test_condition_codes.py +0 -13
  485. chia/_tests/cmds/wallet/test_dao.py +0 -565
  486. chia/_tests/wallet/dao_wallet/__init__.py +0 -0
  487. chia/_tests/wallet/dao_wallet/config.py +0 -3
  488. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +0 -1330
  489. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +0 -3488
  490. chia/cmds/dao.py +0 -1064
  491. chia/cmds/dao_funcs.py +0 -598
  492. chia/consensus/puzzles/__init__.py +0 -0
  493. chia/consensus/puzzles/chialisp_deserialisation.clsp +0 -69
  494. chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +0 -1
  495. chia/consensus/puzzles/rom_bootstrap_generator.clsp +0 -37
  496. chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +0 -1
  497. chia/full_node/puzzles/__init__.py +0 -0
  498. chia/full_node/puzzles/block_program_zero.clsp +0 -14
  499. chia/full_node/puzzles/block_program_zero.clsp.hex +0 -1
  500. chia/full_node/puzzles/decompress_coin_spend_entry.clsp +0 -5
  501. chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +0 -1
  502. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +0 -7
  503. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +0 -1
  504. chia/full_node/puzzles/decompress_puzzle.clsp +0 -6
  505. chia/full_node/puzzles/decompress_puzzle.clsp.hex +0 -1
  506. chia/pools/puzzles/__init__.py +0 -0
  507. chia/pools/puzzles/pool_member_innerpuz.clsp +0 -70
  508. chia/pools/puzzles/pool_member_innerpuz.clsp.hex +0 -1
  509. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +0 -69
  510. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +0 -1
  511. chia/simulator/simulator_constants.py +0 -13
  512. chia/types/blockchain_format/foliage.py +0 -8
  513. chia/types/blockchain_format/pool_target.py +0 -5
  514. chia/types/blockchain_format/reward_chain_block.py +0 -6
  515. chia/types/blockchain_format/sized_bytes.py +0 -11
  516. chia/util/ints.py +0 -19
  517. chia/wallet/cat_wallet/dao_cat_info.py +0 -28
  518. chia/wallet/cat_wallet/dao_cat_wallet.py +0 -669
  519. chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
  520. chia/wallet/cat_wallet/puzzles/cat_truths.clib +0 -31
  521. chia/wallet/cat_wallet/puzzles/cat_v2.clsp +0 -397
  522. chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +0 -1
  523. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +0 -25
  524. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +0 -1
  525. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +0 -15
  526. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +0 -1
  527. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +0 -26
  528. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +0 -1
  529. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +0 -42
  530. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +0 -1
  531. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +0 -24
  532. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +0 -1
  533. chia/wallet/dao_wallet/__init__.py +0 -0
  534. chia/wallet/dao_wallet/dao_info.py +0 -61
  535. chia/wallet/dao_wallet/dao_utils.py +0 -811
  536. chia/wallet/dao_wallet/dao_wallet.py +0 -2119
  537. chia/wallet/did_wallet/puzzles/__init__.py +0 -0
  538. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +0 -135
  539. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +0 -1
  540. chia/wallet/payment.py +0 -33
  541. chia/wallet/puzzles/augmented_condition.clsp +0 -13
  542. chia/wallet/puzzles/augmented_condition.clsp.hex +0 -1
  543. chia/wallet/puzzles/condition_codes.clib +0 -77
  544. chia/wallet/puzzles/curry-and-treehash.clib +0 -102
  545. chia/wallet/puzzles/curry.clib +0 -135
  546. chia/wallet/puzzles/curry_by_index.clib +0 -16
  547. chia/wallet/puzzles/dao_cat_eve.clsp +0 -17
  548. chia/wallet/puzzles/dao_cat_eve.clsp.hex +0 -1
  549. chia/wallet/puzzles/dao_cat_launcher.clsp +0 -36
  550. chia/wallet/puzzles/dao_cat_launcher.clsp.hex +0 -1
  551. chia/wallet/puzzles/dao_finished_state.clsp +0 -35
  552. chia/wallet/puzzles/dao_finished_state.clsp.hex +0 -1
  553. chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +0 -1
  554. chia/wallet/puzzles/dao_lockup.clsp +0 -288
  555. chia/wallet/puzzles/dao_lockup.clsp.hex +0 -1
  556. chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +0 -1
  557. chia/wallet/puzzles/dao_proposal.clsp +0 -377
  558. chia/wallet/puzzles/dao_proposal.clsp.hex +0 -1
  559. chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +0 -1
  560. chia/wallet/puzzles/dao_proposal_timer.clsp +0 -78
  561. chia/wallet/puzzles/dao_proposal_timer.clsp.hex +0 -1
  562. chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +0 -1
  563. chia/wallet/puzzles/dao_proposal_validator.clsp +0 -87
  564. chia/wallet/puzzles/dao_proposal_validator.clsp.hex +0 -1
  565. chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +0 -1
  566. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +0 -240
  567. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +0 -1
  568. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +0 -1
  569. chia/wallet/puzzles/dao_treasury.clsp +0 -115
  570. chia/wallet/puzzles/dao_treasury.clsp.hex +0 -1
  571. chia/wallet/puzzles/dao_update_proposal.clsp +0 -44
  572. chia/wallet/puzzles/dao_update_proposal.clsp.hex +0 -1
  573. chia/wallet/puzzles/json.clib +0 -25
  574. chia/wallet/puzzles/merkle_utils.clib +0 -18
  575. chia/wallet/puzzles/notification.clsp +0 -7
  576. chia/wallet/puzzles/notification.clsp.hex +0 -1
  577. chia/wallet/puzzles/p2_1_of_n.clsp +0 -22
  578. chia/wallet/puzzles/p2_1_of_n.clsp.hex +0 -1
  579. chia/wallet/puzzles/p2_conditions.clsp +0 -3
  580. chia/wallet/puzzles/p2_conditions.clsp.hex +0 -1
  581. chia/wallet/puzzles/p2_delegated_conditions.clsp +0 -18
  582. chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +0 -1
  583. chia/wallet/puzzles/p2_delegated_puzzle.clsp +0 -19
  584. chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +0 -1
  585. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +0 -91
  586. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +0 -1
  587. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +0 -108
  588. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +0 -1
  589. chia/wallet/puzzles/p2_parent.clsp +0 -19
  590. chia/wallet/puzzles/p2_parent.clsp.hex +0 -1
  591. chia/wallet/puzzles/p2_puzzle_hash.clsp +0 -18
  592. chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +0 -1
  593. chia/wallet/puzzles/p2_singleton.clsp +0 -30
  594. chia/wallet/puzzles/p2_singleton.clsp.hex +0 -1
  595. chia/wallet/puzzles/p2_singleton_aggregator.clsp +0 -81
  596. chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +0 -1
  597. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +0 -50
  598. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +0 -1
  599. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +0 -47
  600. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +0 -1
  601. chia/wallet/puzzles/settlement_payments.clsp +0 -49
  602. chia/wallet/puzzles/settlement_payments.clsp.hex +0 -1
  603. chia/wallet/puzzles/sha256tree.clib +0 -11
  604. chia/wallet/puzzles/singleton_launcher.clsp +0 -16
  605. chia/wallet/puzzles/singleton_launcher.clsp.hex +0 -1
  606. chia/wallet/puzzles/singleton_top_layer.clsp +0 -177
  607. chia/wallet/puzzles/singleton_top_layer.clsp.hex +0 -1
  608. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +0 -107
  609. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +0 -1
  610. chia/wallet/puzzles/singleton_truths.clib +0 -21
  611. chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
  612. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +0 -3
  613. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +0 -1
  614. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +0 -304
  615. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +0 -1
  616. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +0 -45
  617. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +0 -1
  618. chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
  619. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +0 -30
  620. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +0 -1
  621. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +0 -75
  622. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +0 -1
  623. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +0 -32
  624. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +0 -1
  625. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +0 -80
  626. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +0 -1
  627. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +0 -163
  628. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +0 -1
  629. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +0 -16
  630. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +0 -1
  631. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +0 -74
  632. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +0 -1
  633. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +0 -23
  634. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +0 -1
  635. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +0 -64
  636. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +0 -1
  637. chia_blockchain-2.5.2rc2.dist-info/RECORD +0 -1042
  638. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/LICENSE +0 -0
  639. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/WHEEL +0 -0
  640. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/entry_points.txt +0 -0
@@ -3,16 +3,17 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass, field
4
4
  from typing import Any, Optional
5
5
 
6
+ from chia_rs.sized_bytes import bytes32
7
+ from chia_rs.sized_ints import uint32, uint64
8
+
6
9
  from chia.types.blockchain_format.coin import Coin
7
- from chia.types.blockchain_format.sized_bytes import bytes32
8
10
  from chia.types.coin_spend import CoinSpend
9
11
  from chia.types.spend_bundle import SpendBundle
10
12
  from chia.types.spend_bundle_conditions import SpendBundleConditions
11
- from chia.util.ints import uint32, uint64
12
13
  from chia.util.streamable import recurse_jsonify
13
14
 
14
15
 
15
- @dataclass(frozen=True)
16
+ @dataclass
16
17
  class BundleCoinSpend:
17
18
  coin_spend: CoinSpend
18
19
  eligible_for_dedup: bool
@@ -21,6 +22,12 @@ class BundleCoinSpend:
21
22
  # cost on the specific solution in this item
22
23
  cost: Optional[uint64] = None
23
24
 
25
+ # if this spend is eligible for fast forward, this may be set to the
26
+ # current unspent coin belonging to this singleton, that we would rebase
27
+ # this spen on top of if we were to make a block now
28
+ # When finding MempoolItems by coin ID, we use this Coin ID if it's set
29
+ latest_singleton_coin: Optional[bytes32] = None
30
+
24
31
 
25
32
  @dataclass(frozen=True)
26
33
  class MempoolItem:
@@ -3,8 +3,9 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Optional, Union
5
5
 
6
+ from chia_rs.sized_ints import uint8
7
+
6
8
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
7
- from chia.util.ints import uint8
8
9
  from chia.util.streamable import Streamable, streamable
9
10
 
10
11
 
chia/types/mojos.py CHANGED
@@ -2,6 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  from typing import NewType
4
4
 
5
- from chia.util.ints import uint64
5
+ from chia_rs.sized_ints import uint64
6
6
 
7
7
  Mojos = NewType("Mojos", uint64)
chia/types/peer_info.py CHANGED
@@ -4,7 +4,8 @@ import ipaddress
4
4
  from dataclasses import dataclass
5
5
  from typing import Union
6
6
 
7
- from chia.util.ints import uint16, uint64
7
+ from chia_rs.sized_ints import uint16, uint64
8
+
8
9
  from chia.util.ip_address import IPAddress
9
10
  from chia.util.streamable import Streamable, streamable
10
11
 
@@ -5,8 +5,9 @@ import dataclasses
5
5
  from dataclasses import dataclass, field
6
6
  from typing import ClassVar, Generic, Optional, TypeVar, Union
7
7
 
8
+ from chia_rs.sized_bytes import bytes32
9
+
8
10
  from chia.server.ws_connection import WSChiaConnection
9
- from chia.types.blockchain_format.sized_bytes import bytes32
10
11
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
11
12
  from chia.types.spend_bundle import SpendBundle
12
13
  from chia.util.errors import Err
@@ -3,12 +3,12 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Optional
5
5
 
6
- from chia.types.blockchain_format.foliage import Foliage, FoliageTransactionBlock
7
- from chia.types.blockchain_format.reward_chain_block import RewardChainBlockUnfinished
8
- from chia.types.blockchain_format.sized_bytes import bytes32
6
+ from chia_rs import Foliage, FoliageTransactionBlock, RewardChainBlockUnfinished
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint128
9
+
9
10
  from chia.types.blockchain_format.vdf import VDFProof
10
11
  from chia.types.end_of_slot_bundle import EndOfSubSlotBundle
11
- from chia.util.ints import uint128
12
12
  from chia.util.streamable import Streamable, streamable
13
13
 
14
14
 
@@ -3,8 +3,9 @@ from __future__ import annotations
3
3
  import dataclasses
4
4
  from typing import Optional
5
5
 
6
+ from chia_rs.sized_ints import uint64
7
+
6
8
  from chia.consensus.block_record import BlockRecord
7
- from chia.util.ints import uint64
8
9
 
9
10
 
10
11
  @dataclasses.dataclass
@@ -2,15 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
 
5
- import chia_rs
5
+ from chia_rs import RewardChainBlock, SubEpochChallengeSegment, SubEpochData
6
6
 
7
- from chia.types.blockchain_format.reward_chain_block import RewardChainBlock
8
7
  from chia.types.end_of_slot_bundle import EndOfSubSlotBundle
9
8
  from chia.types.header_block import HeaderBlock
10
9
  from chia.util.streamable import Streamable, streamable
11
10
 
12
- SubEpochData = chia_rs.SubEpochData
13
-
14
11
  # number of challenge blocks
15
12
  # Average iters for challenge blocks
16
13
  # |--A-R----R-------R--------R------R----R----------R-----R--R---| Honest difficulty 1000
@@ -22,11 +19,6 @@ SubEpochData = chia_rs.SubEpochData
22
19
  # total number of challenge blocks == total number of reward chain blocks
23
20
 
24
21
 
25
- SubEpochChallengeSegment = chia_rs.SubEpochChallengeSegment
26
- SubEpochSegments = chia_rs.SubEpochSegments
27
- SubSlotData = chia_rs.SubSlotData
28
-
29
-
30
22
  @streamable
31
23
  @dataclass(frozen=True)
32
24
  # this is used only for serialization to database
@@ -2,12 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, ClassVar, Optional, cast
4
4
 
5
+ from chia_rs.sized_bytes import bytes32
6
+ from chia_rs.sized_ints import uint32
7
+
5
8
  from chia.consensus.block_record import BlockRecord
6
9
  from chia.consensus.blockchain_interface import BlocksProtocol
7
- from chia.types.blockchain_format.sized_bytes import bytes32
8
10
  from chia.types.full_block import FullBlock
9
11
  from chia.util.errors import Err
10
- from chia.util.ints import uint32
11
12
 
12
13
 
13
14
  class AugmentedBlockchain:
@@ -46,9 +47,16 @@ class AugmentedBlockchain:
46
47
  self._height_to_hash[block_record.height] = block_record.header_hash
47
48
 
48
49
  def remove_extra_block(self, hh: bytes32) -> None:
49
- if hh in self._extra_blocks:
50
- block_record = self._extra_blocks.pop(hh)[1]
51
- del self._height_to_hash[block_record.height]
50
+ if hh not in self._extra_blocks:
51
+ return
52
+
53
+ block_record = self._extra_blocks.pop(hh)[1]
54
+ if self._underlying.contains_block(block_record.header_hash, block_record.height):
55
+ height_to_remove = block_record.height
56
+ for h in range(height_to_remove, -1, -1):
57
+ if h not in self._height_to_hash:
58
+ break
59
+ del self._height_to_hash[uint32(h)]
52
60
 
53
61
  # BlocksProtocol
54
62
  async def lookup_block_generators(self, header_hash: bytes32, generator_refs: set[uint32]) -> dict[uint32, bytes]:
@@ -82,12 +90,11 @@ class AugmentedBlockchain:
82
90
 
83
91
  def add_block_record(self, block_record: BlockRecord) -> None:
84
92
  self._underlying.add_block_record(block_record)
85
-
93
+ self._height_to_hash[block_record.height] = block_record.header_hash
86
94
  # now that we're adding the block to the underlying blockchain, we don't
87
95
  # need to keep the extra block around anymore
88
96
  hh = block_record.header_hash
89
97
  if hh in self._extra_blocks:
90
- del self._height_to_hash[block_record.height]
91
98
  del self._extra_blocks[hh]
92
99
 
93
100
  # BlockRecordsProtocol
@@ -109,6 +116,7 @@ class AugmentedBlockchain:
109
116
  ret = self._get_block_record(header_hash)
110
117
  if ret is not None:
111
118
  return ret
119
+ return self._underlying.block_record(header_hash)
112
120
  return self._underlying.height_to_block_record(height)
113
121
 
114
122
  def height_to_hash(self, height: uint32) -> Optional[bytes32]:
@@ -117,8 +125,11 @@ class AugmentedBlockchain:
117
125
  return ret
118
126
  return self._underlying.height_to_hash(height)
119
127
 
120
- def contains_block(self, header_hash: bytes32) -> bool:
121
- return (header_hash in self._extra_blocks) or self._underlying.contains_block(header_hash)
128
+ def contains_block(self, header_hash: bytes32, height: uint32) -> bool:
129
+ block_hash_from_hh = self.height_to_hash(height)
130
+ if block_hash_from_hh is None or block_hash_from_hh != header_hash:
131
+ return False
132
+ return True
122
133
 
123
134
  def contains_height(self, height: uint32) -> bool:
124
135
  return (height in self._height_to_hash) or self._underlying.contains_height(height)
chia/util/block_cache.py CHANGED
@@ -2,9 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, ClassVar, Optional, cast
4
4
 
5
+ from chia_rs.sized_bytes import bytes32
6
+ from chia_rs.sized_ints import uint32
7
+
5
8
  from chia.consensus.block_record import BlockRecord
6
- from chia.types.blockchain_format.sized_bytes import bytes32
7
- from chia.util.ints import uint32
8
9
 
9
10
 
10
11
  # implements BlockRecordsProtocol
@@ -43,8 +44,11 @@ class BlockCache:
43
44
  return None
44
45
  return self._height_to_hash[height]
45
46
 
46
- def contains_block(self, header_hash: bytes32) -> bool:
47
- return header_hash in self._block_records
47
+ def contains_block(self, header_hash: bytes32, height: uint32) -> bool:
48
+ block_hash_from_hh = self.height_to_hash(height)
49
+ if block_hash_from_hh is None or block_hash_from_hh != header_hash:
50
+ return False
51
+ return True
48
52
 
49
53
  def contains_height(self, height: uint32) -> bool:
50
54
  return height in self._height_to_hash
@@ -4,18 +4,18 @@ from functools import lru_cache
4
4
  from typing import Callable, Union
5
5
 
6
6
  from chia_rs import G1Element
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint64
7
9
  from clvm.casts import int_from_bytes, int_to_bytes
8
10
 
9
11
  from chia.types.blockchain_format.coin import Coin
10
12
  from chia.types.blockchain_format.program import Program
11
13
  from chia.types.blockchain_format.serialized_program import SerializedProgram
12
- from chia.types.blockchain_format.sized_bytes import bytes32
13
14
  from chia.types.condition_opcodes import ConditionOpcode
14
15
  from chia.types.condition_with_args import ConditionWithArgs
15
16
  from chia.types.spend_bundle_conditions import SpendBundleConditions, SpendConditions
16
17
  from chia.util.errors import ConsensusError, Err
17
18
  from chia.util.hash import std_hash
18
- from chia.util.ints import uint64
19
19
 
20
20
 
21
21
  def parse_sexp_to_condition(sexp: Program) -> ConditionWithArgs:
@@ -3,14 +3,13 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Callable, Optional
5
5
 
6
- from chia_rs import G1Element, G2Element, serialized_length
6
+ from chia_rs import G1Element, G2Element, TransactionsInfo, serialized_length
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint32
7
9
  from chiabip158 import PyBIP158
8
10
 
9
11
  from chia.types.blockchain_format.coin import Coin
10
- from chia.types.blockchain_format.foliage import TransactionsInfo
11
12
  from chia.types.blockchain_format.serialized_program import SerializedProgram
12
- from chia.types.blockchain_format.sized_bytes import bytes32
13
- from chia.util.ints import uint32
14
13
 
15
14
 
16
15
  def skip_list(buf: memoryview, skip_item: Callable[[memoryview], memoryview]) -> memoryview:
@@ -3,14 +3,14 @@ from __future__ import annotations
3
3
  from collections.abc import Collection
4
4
  from typing import Optional
5
5
 
6
+ from chia_rs.sized_bytes import bytes32
7
+ from chia_rs.sized_ints import uint64
6
8
  from chiabip158 import PyBIP158
7
9
 
8
10
  from chia.types.blockchain_format.coin import Coin
9
- from chia.types.blockchain_format.sized_bytes import bytes32
10
11
  from chia.types.full_block import FullBlock
11
12
  from chia.types.header_block import HeaderBlock
12
13
  from chia.types.spend_bundle_conditions import SpendBundleConditions
13
- from chia.util.ints import uint64
14
14
 
15
15
 
16
16
  def get_block_header(
@@ -264,19 +264,9 @@ timelord:
264
264
  logging: *logging
265
265
  network_overrides: *network_overrides
266
266
  selected_network: *selected_network
267
- # fast_algorithm is a faster proof generation algorithm. This speed increase
268
- # requires much less memory usage and a does not have the risk of OOM that
269
- # the normal timelord has but requires significantly more cores doing
270
- # parallel proof generation and creates a larger and slower to verify
271
- # resulting proof.
272
- # An Intel Core i9-10900K can run 2 normal vdf_clients at ~221,000 ips
273
- # without slowing down but running more than 1 with fast_algorithm will
274
- # run each vdf_client slower.
275
- fast_algorithm: False
276
267
  # Bluebox (sanitizing timelord):
277
268
  # If set 'True', the timelord will create compact proofs of time, instead of
278
- # extending the chain. The attribute 'fast_algorithm' won't apply if timelord
279
- # is running in bluebox_mode.
269
+ # extending the chain.
280
270
  # You must set 'send_uncompact_interval' in 'full_node' > 0 in the full_node
281
271
  # section below to have full_node send existing time proofs to be sanitized.
282
272
  bluebox_mode: False
@@ -488,6 +478,7 @@ introducer:
488
478
  logging: *logging
489
479
  network_overrides: *network_overrides
490
480
  selected_network: *selected_network
481
+ dns_servers: *dns_servers
491
482
 
492
483
  ssl:
493
484
  public_crt: "config/ssl/full_node/public_full_node.crt"
chia/util/network.py CHANGED
@@ -12,10 +12,10 @@ from typing import Any, Literal, Optional, Union
12
12
 
13
13
  from aiohttp import web
14
14
  from aiohttp.log import web_logger
15
+ from chia_rs.sized_bytes import bytes32
16
+ from chia_rs.sized_ints import uint16
15
17
  from typing_extensions import final
16
18
 
17
- from chia.types.blockchain_format.sized_bytes import bytes32
18
- from chia.util.ints import uint16
19
19
  from chia.util.ip_address import IPAddress
20
20
  from chia.util.task_referencer import create_referenced_task
21
21
 
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from chia_rs.sized_ints import uint128
4
+
3
5
  from chia.consensus.block_record import BlockRecord
4
6
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
5
- from chia.util.ints import uint128
6
7
 
7
8
 
8
9
  def get_prev_transaction_block(
chia/util/task_timing.py CHANGED
@@ -250,7 +250,7 @@ def start_task_instrumentation() -> None:
250
250
 
251
251
  def color(pct: float) -> str:
252
252
  assert pct >= 0 and pct <= 100
253
- return f"{int((100. - pct) // 10) + 1}"
253
+ return f"{((100 - pct) // 10) + 1}"
254
254
 
255
255
 
256
256
  def fontcolor(pct: float) -> str:
chia/util/vdf_prover.py CHANGED
@@ -1,12 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from chia_rs import ConsensusConstants
4
+ from chia_rs.sized_bytes import bytes32
5
+ from chia_rs.sized_ints import uint8, uint64
3
6
  from chiavdf import prove
4
7
 
5
- from chia.consensus.constants import ConsensusConstants
6
8
  from chia.types.blockchain_format.classgroup import ClassgroupElement
7
- from chia.types.blockchain_format.sized_bytes import bytes32
8
9
  from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
9
- from chia.util.ints import uint8, uint64
10
10
 
11
11
 
12
12
  def get_vdf_info_and_proof(
chia/util/ws_message.py CHANGED
@@ -2,9 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Any, Optional
4
4
 
5
+ from chia_rs.sized_bytes import bytes32
5
6
  from typing_extensions import TypedDict
6
7
 
7
- from chia.types.blockchain_format.sized_bytes import bytes32
8
8
  from chia.util.json_util import dict_to_json_str
9
9
 
10
10
  # Messages must follow this format
@@ -3,9 +3,10 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Optional
5
5
 
6
+ from chia_rs.sized_bytes import bytes32
7
+ from chia_rs.sized_ints import uint64
8
+
6
9
  from chia.types.blockchain_format.program import Program
7
- from chia.types.blockchain_format.sized_bytes import bytes32
8
- from chia.util.ints import uint64
9
10
  from chia.util.streamable import Streamable, streamable
10
11
  from chia.wallet.lineage_proof import LineageProof
11
12
  from chia.wallet.vc_wallet.cr_cat_drivers import ProofsChecker
@@ -3,11 +3,12 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Any, Callable, Optional
5
5
 
6
+ from chia_rs.sized_bytes import bytes32
7
+ from chia_rs.sized_ints import uint64
8
+
6
9
  from chia.types.blockchain_format.coin import Coin
7
10
  from chia.types.blockchain_format.program import Program
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
11
  from chia.types.coin_spend import CoinSpend
10
- from chia.util.ints import uint64
11
12
  from chia.wallet.cat_wallet.cat_utils import (
12
13
  CAT_MOD,
13
14
  SpendableCAT,
@@ -4,24 +4,26 @@ import dataclasses
4
4
  from collections.abc import Iterator
5
5
  from typing import Optional, Union
6
6
 
7
+ from chia_puzzles_py.programs import CAT_PUZZLE, CAT_PUZZLE_HASH
7
8
  from chia_rs import G2Element
9
+ from chia_rs.sized_bytes import bytes32
8
10
 
9
11
  from chia.types.blockchain_format.coin import Coin, coin_as_list
10
12
  from chia.types.blockchain_format.program import INFINITE_COST, Program
11
- from chia.types.blockchain_format.sized_bytes import bytes32
12
13
  from chia.types.coin_spend import make_spend
13
14
  from chia.types.condition_opcodes import ConditionOpcode
14
15
  from chia.util.condition_tools import conditions_dict_for_solution
15
16
  from chia.wallet.lineage_proof import LineageProof
16
- from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
17
17
  from chia.wallet.uncurried_puzzle import UncurriedPuzzle
18
+ from chia.wallet.util.curry_and_treehash import calculate_hash_of_quoted_mod_hash
18
19
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
19
20
 
20
21
  NULL_SIGNATURE = G2Element()
21
22
 
22
23
  ANYONE_CAN_SPEND_PUZZLE = Program.to(1) # simply return the conditions
23
- CAT_MOD = load_clvm_maybe_recompile("cat_v2.clsp", package_or_requirement="chia.wallet.cat_wallet.puzzles")
24
- CAT_MOD_HASH = CAT_MOD.get_tree_hash()
24
+ CAT_MOD = Program.from_bytes(CAT_PUZZLE)
25
+ CAT_MOD_HASH = bytes32(CAT_PUZZLE_HASH)
26
+ QUOTED_CAT_MOD_HASH = calculate_hash_of_quoted_mod_hash(CAT_MOD_HASH)
25
27
  CAT_MOD_HASH_HASH: bytes32 = Program.to(CAT_MOD_HASH).get_tree_hash()
26
28
 
27
29
 
@@ -7,23 +7,25 @@ import traceback
7
7
  from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
8
8
 
9
9
  from chia_rs import G1Element
10
+ from chia_rs.sized_bytes import bytes32
11
+ from chia_rs.sized_ints import uint32, uint64, uint128
10
12
  from typing_extensions import Unpack
11
13
 
12
14
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
13
15
  from chia.server.ws_connection import WSChiaConnection
14
16
  from chia.types.blockchain_format.coin import Coin
15
17
  from chia.types.blockchain_format.program import Program
16
- from chia.types.blockchain_format.sized_bytes import bytes32
17
18
  from chia.types.coin_spend import compute_additions_with_cost
18
19
  from chia.types.condition_opcodes import ConditionOpcode
19
20
  from chia.util.byte_types import hexstr_to_bytes
20
21
  from chia.util.errors import Err, ValidationError
21
22
  from chia.util.hash import std_hash
22
- from chia.util.ints import uint32, uint64, uint128
23
23
  from chia.wallet.cat_wallet.cat_constants import DEFAULT_CATS
24
24
  from chia.wallet.cat_wallet.cat_info import CATCoinData, CATInfo, LegacyCATInfo
25
25
  from chia.wallet.cat_wallet.cat_utils import (
26
26
  CAT_MOD,
27
+ CAT_MOD_HASH_HASH,
28
+ QUOTED_CAT_MOD_HASH,
27
29
  SpendableCAT,
28
30
  construct_cat_puzzle,
29
31
  match_cat_puzzle,
@@ -35,6 +37,7 @@ from chia.wallet.conditions import (
35
37
  AssertCoinAnnouncement,
36
38
  Condition,
37
39
  ConditionValidTimes,
40
+ CreateCoin,
38
41
  CreateCoinAnnouncement,
39
42
  UnknownCondition,
40
43
  parse_timelock_info,
@@ -42,13 +45,12 @@ from chia.wallet.conditions import (
42
45
  from chia.wallet.derivation_record import DerivationRecord
43
46
  from chia.wallet.lineage_proof import LineageProof
44
47
  from chia.wallet.outer_puzzles import AssetType
45
- from chia.wallet.payment import Payment
46
48
  from chia.wallet.puzzle_drivers import PuzzleInfo
47
49
  from chia.wallet.puzzles.tails import ALL_LIMITATIONS_PROGRAMS
48
50
  from chia.wallet.transaction_record import TransactionRecord
49
51
  from chia.wallet.uncurried_puzzle import uncurry_puzzle
50
52
  from chia.wallet.util.compute_memos import compute_memos
51
- from chia.wallet.util.curry_and_treehash import calculate_hash_of_quoted_mod_hash, curry_and_treehash
53
+ from chia.wallet.util.curry_and_treehash import curry_and_treehash
52
54
  from chia.wallet.util.transaction_type import TransactionType
53
55
  from chia.wallet.util.wallet_sync_utils import fetch_coin_spend_for_coin_state
54
56
  from chia.wallet.util.wallet_types import WalletType
@@ -62,12 +64,6 @@ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
62
64
  if TYPE_CHECKING:
63
65
  from chia.wallet.wallet_state_manager import WalletStateManager
64
66
 
65
- # This should probably not live in this file but it's for experimental right now
66
-
67
- CAT_MOD_HASH = CAT_MOD.get_tree_hash()
68
- CAT_MOD_HASH_HASH = Program.to(CAT_MOD_HASH).get_tree_hash()
69
- QUOTED_MOD_HASH = calculate_hash_of_quoted_mod_hash(CAT_MOD_HASH)
70
-
71
67
 
72
68
  def not_ephemeral_additions(sp: WalletSpendBundle) -> list[Coin]:
73
69
  removals: set[Coin] = set()
@@ -433,7 +429,9 @@ class CATWallet:
433
429
  def puzzle_hash_for_pk(self, pubkey: G1Element) -> bytes32:
434
430
  inner_puzzle_hash = self.standard_wallet.puzzle_hash_for_pk(pubkey)
435
431
  limitations_program_hash_hash = Program.to(self.cat_info.limitations_program_hash).get_tree_hash()
436
- return curry_and_treehash(QUOTED_MOD_HASH, CAT_MOD_HASH_HASH, limitations_program_hash_hash, inner_puzzle_hash)
432
+ return curry_and_treehash(
433
+ QUOTED_CAT_MOD_HASH, CAT_MOD_HASH_HASH, limitations_program_hash_hash, inner_puzzle_hash
434
+ )
437
435
 
438
436
  async def get_cat_puzzle_hash(self, new: bool) -> bytes32:
439
437
  if new:
@@ -567,8 +565,8 @@ class CATWallet:
567
565
  )
568
566
  origin_id = next(iter(chia_coins)).name()
569
567
  await self.standard_wallet.generate_signed_transaction(
570
- uint64(0),
571
- (await self.standard_wallet.get_puzzle_hash(not action_scope.config.tx_config.reuse_puzhash)),
568
+ [],
569
+ [],
572
570
  inner_action_scope,
573
571
  fee=uint64(fee - amount_to_claim),
574
572
  coins=chia_coins,
@@ -584,8 +582,8 @@ class CATWallet:
584
582
  origin_id = next(iter(chia_coins)).name()
585
583
  selected_amount = sum(c.amount for c in chia_coins)
586
584
  await self.standard_wallet.generate_signed_transaction(
587
- uint64(selected_amount + amount_to_claim - fee),
588
- (await self.standard_wallet.get_puzzle_hash(not action_scope.config.tx_config.reuse_puzhash)),
585
+ [uint64(selected_amount + amount_to_claim - fee)],
586
+ [(await self.standard_wallet.get_puzzle_hash(not action_scope.config.tx_config.reuse_puzhash))],
589
587
  inner_action_scope,
590
588
  coins=chia_coins,
591
589
  negative_change_allowed=True,
@@ -613,7 +611,7 @@ class CATWallet:
613
611
 
614
612
  async def generate_unsigned_spendbundle(
615
613
  self,
616
- payments: list[Payment],
614
+ payments: list[CreateCoin],
617
615
  action_scope: WalletActionScope,
618
616
  fee: uint64 = uint64(0),
619
617
  cat_discrepancy: Optional[tuple[int, Program, Program]] = None, # (extra_delta, tail_reveal, tail_solution)
@@ -663,7 +661,7 @@ class CATWallet:
663
661
  break
664
662
  else:
665
663
  change_puzhash = await self.standard_wallet.get_puzzle_hash(new=True)
666
- primaries.append(Payment(change_puzhash, uint64(change), [change_puzhash]))
664
+ primaries.append(CreateCoin(change_puzhash, uint64(change), [change_puzhash]))
667
665
 
668
666
  # Loop through the coins we've selected and gather the information we need to spend them
669
667
  spendable_cat_list = []
@@ -763,7 +761,7 @@ class CATWallet:
763
761
  for amount, puzhash, memo_list in zip(amounts, puzzle_hashes, memos):
764
762
  memos_with_hint: list[bytes] = [puzhash]
765
763
  memos_with_hint.extend(memo_list)
766
- payments.append(Payment(puzhash, amount, memos_with_hint))
764
+ payments.append(CreateCoin(puzhash, amount, memos_with_hint))
767
765
 
768
766
  payment_sum = sum(p.amount for p in payments)
769
767
  spend_bundle = await self.generate_unsigned_spendbundle(
@@ -3,7 +3,8 @@ from __future__ import annotations
3
3
  import logging
4
4
  from typing import Optional
5
5
 
6
- from chia.types.blockchain_format.sized_bytes import bytes32
6
+ from chia_rs.sized_bytes import bytes32
7
+
7
8
  from chia.util.db_wrapper import DBWrapper2
8
9
  from chia.wallet.lineage_proof import LineageProof
9
10
 
@@ -4,9 +4,10 @@ import logging
4
4
  import random
5
5
  from typing import Optional
6
6
 
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint64, uint128
9
+
7
10
  from chia.types.blockchain_format.coin import Coin
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
- from chia.util.ints import uint64, uint128
10
11
  from chia.wallet.util.tx_config import CoinSelectionConfig
11
12
  from chia.wallet.wallet_coin_record import WalletCoinRecord
12
13
 
@@ -58,10 +59,9 @@ async def select_coins(
58
59
  f"Transaction for {amount} is greater than max spendable balance in a block of {sum_spendable_coins}. "
59
60
  "There may be other transactions pending or our minimum coin amount is too high."
60
61
  )
61
- if amount == 0 and sum_spendable_coins == 0:
62
+ if amount == 0 and len(spendable_coins) == 0:
62
63
  raise ValueError(
63
- "No coins available to spend, you can not create a coin with an amount of 0,"
64
- " without already having coins."
64
+ "No coins available to spend, you can not create a coin with an amount of 0, without already having coins."
65
65
  )
66
66
 
67
67
  # Sort the coins by amount