chia-blockchain 2.5.2rc2__py3-none-any.whl → 2.5.3rc2__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 +80 -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.3rc2.dist-info}/METADATA +3 -2
  482. chia_blockchain-2.5.3rc2.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.3rc2.dist-info}/LICENSE +0 -0
  639. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc2.dist-info}/WHEEL +0 -0
  640. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc2.dist-info}/entry_points.txt +0 -0
chia/wallet/conditions.py CHANGED
@@ -6,13 +6,13 @@ from dataclasses import dataclass, fields, replace
6
6
  from typing import Any, ClassVar, Optional, TypeVar, Union, final, get_type_hints
7
7
 
8
8
  from chia_rs import Coin, G1Element
9
+ from chia_rs.sized_bytes import bytes32
10
+ from chia_rs.sized_ints import uint8, uint32, uint64
9
11
  from clvm.casts import int_from_bytes, int_to_bytes
10
12
 
11
13
  from chia.types.blockchain_format.program import Program
12
- from chia.types.blockchain_format.sized_bytes import bytes32
13
14
  from chia.types.condition_opcodes import ConditionOpcode
14
15
  from chia.util.hash import std_hash
15
- from chia.util.ints import uint8, uint32, uint64
16
16
  from chia.util.streamable import Streamable, streamable
17
17
 
18
18
  _T_Condition = TypeVar("_T_Condition", bound="Condition")
@@ -221,7 +221,7 @@ class AggSigMe(Condition):
221
221
  )
222
222
 
223
223
 
224
- @final
224
+ # @final # subclassing allowed for NotarizedPayment
225
225
  @streamable
226
226
  @dataclass(frozen=True)
227
227
  class CreateCoin(Condition):
@@ -237,7 +237,7 @@ class CreateCoin(Condition):
237
237
  return condition
238
238
 
239
239
  @classmethod
240
- def from_program(cls, program: Program) -> CreateCoin:
240
+ def from_program(cls: type[_T_CreateCoin], program: Program) -> _T_CreateCoin:
241
241
  potential_memos: Program = program.at("rrr")
242
242
  return cls(
243
243
  bytes32(program.at("rf").as_atom()),
@@ -249,6 +249,12 @@ class CreateCoin(Condition):
249
249
  ),
250
250
  )
251
251
 
252
+ def as_condition_args(self) -> list[Union[bytes32, uint64, Optional[list[bytes]]]]:
253
+ return [self.puzzle_hash, self.amount, self.memos]
254
+
255
+
256
+ _T_CreateCoin = TypeVar("_T_CreateCoin", bound=CreateCoin)
257
+
252
258
 
253
259
  @final
254
260
  @streamable
@@ -445,9 +451,9 @@ class MessageParticipant(Streamable):
445
451
  == self.coin_id_committed
446
452
  ), "The value for coin_id_committed must be equal to the implied ID of the other three arguments"
447
453
  if self.mode_integer is not None:
448
- assert (
449
- self.mode == self.mode_integer
450
- ), "If mode_integer is manually specified, you must specify committments that match with the mode"
454
+ assert self.mode == self.mode_integer, (
455
+ "If mode_integer is manually specified, you must specify committments that match with the mode"
456
+ )
451
457
 
452
458
  @property
453
459
  def _nothing_committed(self) -> bool:
@@ -561,14 +567,14 @@ class SendMessage(Condition):
561
567
  raise ValueError("Must specify either mode_integer or both sender and reciever")
562
568
 
563
569
  if self.mode_integer is not None and self.sender is not None:
564
- assert (
565
- self.mode_integer >> 3 == self.sender.mode
566
- ), "The first 3 bits of mode_integer don't match the sender's mode"
570
+ assert self.mode_integer >> 3 == self.sender.mode, (
571
+ "The first 3 bits of mode_integer don't match the sender's mode"
572
+ )
567
573
 
568
574
  if self.mode_integer is not None and self.receiver is not None:
569
- assert (
570
- self.mode_integer & 0b000111 == self.receiver.mode
571
- ), "The last 3 bits of mode_integer don't match the receiver's mode"
575
+ assert self.mode_integer & 0b000111 == self.receiver.mode, (
576
+ "The last 3 bits of mode_integer don't match the receiver's mode"
577
+ )
572
578
 
573
579
  if self.var_args is None and self._other_party is None:
574
580
  raise ValueError(
@@ -576,9 +582,9 @@ class SendMessage(Condition):
576
582
  )
577
583
 
578
584
  if self.var_args is not None and self._other_party is not None and not self._other_party._nothing_committed:
579
- assert (
580
- self.var_args == self._other_party.necessary_args
581
- ), f"The implied arguments for {self._other_party} do not match the specified arguments {self.var_args}"
585
+ assert self.var_args == self._other_party.necessary_args, (
586
+ f"The implied arguments for {self._other_party} do not match the specified arguments {self.var_args}"
587
+ )
582
588
 
583
589
  @property
584
590
  def args(self) -> list[Program]:
@@ -3,31 +3,31 @@ from __future__ import annotations
3
3
  from collections.abc import Iterator
4
4
  from typing import Union
5
5
 
6
+ from chia_puzzles_py.programs import GRAFTROOT_DL_OFFERS as GRAFTROOT_DL_OFFERS_BYTES
7
+ from chia_puzzles_py.programs import P2_PARENT as P2_PARENT_BYTES
8
+ from chia_rs.sized_bytes import bytes32
9
+ from chia_rs.sized_ints import uint64
10
+
6
11
  from chia.types.blockchain_format.program import INFINITE_COST, Program
7
12
  from chia.types.blockchain_format.serialized_program import SerializedProgram
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
13
  from chia.types.condition_opcodes import ConditionOpcode
10
- from chia.util.ints import uint64
11
- from chia.wallet.nft_wallet.nft_puzzles import NFT_STATE_LAYER_MOD, create_nft_layer_puzzle_with_curry_params
12
- from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
13
-
14
- # from chia.types.condition_opcodes import ConditionOpcode
15
- # from chia.wallet.util.merkle_tree import MerkleTree, TreeType
14
+ from chia.wallet.nft_wallet.nft_puzzle_utils import create_nft_layer_puzzle_with_curry_params
15
+ from chia.wallet.nft_wallet.nft_puzzles import NFT_STATE_LAYER_MOD
16
+ from chia.wallet.singleton import (
17
+ SINGLETON_LAUNCHER_PUZZLE_HASH,
18
+ SINGLETON_TOP_LAYER_MOD,
19
+ )
16
20
 
17
21
  ACS_MU = Program.to(11) # returns the third argument a.k.a the full solution
18
22
  ACS_MU_PH = ACS_MU.get_tree_hash()
19
- SINGLETON_TOP_LAYER_MOD = load_clvm_maybe_recompile("singleton_top_layer_v1_1.clsp")
20
- SINGLETON_LAUNCHER = load_clvm_maybe_recompile("singleton_launcher.clsp")
21
- GRAFTROOT_DL_OFFERS = load_clvm_maybe_recompile(
22
- "graftroot_dl_offers.clsp", package_or_requirement="chia.data_layer.puzzles"
23
- )
24
- P2_PARENT = load_clvm_maybe_recompile("p2_parent.clsp")
23
+ GRAFTROOT_DL_OFFERS = Program.from_bytes(GRAFTROOT_DL_OFFERS_BYTES)
24
+ P2_PARENT = Program.from_bytes(P2_PARENT_BYTES)
25
25
 
26
26
 
27
27
  def create_host_fullpuz(innerpuz: Union[Program, bytes32], current_root: bytes32, genesis_id: bytes32) -> Program:
28
28
  db_layer = create_host_layer_puzzle(innerpuz, current_root)
29
29
  mod_hash = SINGLETON_TOP_LAYER_MOD.get_tree_hash()
30
- singleton_struct = Program.to((mod_hash, (genesis_id, SINGLETON_LAUNCHER.get_tree_hash())))
30
+ singleton_struct = Program.to((mod_hash, (genesis_id, SINGLETON_LAUNCHER_PUZZLE_HASH)))
31
31
  return SINGLETON_TOP_LAYER_MOD.curry(singleton_struct, db_layer)
32
32
 
33
33
 
@@ -72,7 +72,7 @@ def launch_solution_to_singleton_info(launch_solution: Program) -> tuple[bytes32
72
72
 
73
73
  def launcher_to_struct(launcher_id: bytes32) -> Program:
74
74
  struct: Program = Program.to(
75
- (SINGLETON_TOP_LAYER_MOD.get_tree_hash(), (launcher_id, SINGLETON_LAUNCHER.get_tree_hash()))
75
+ (SINGLETON_TOP_LAYER_MOD.get_tree_hash(), (launcher_id, SINGLETON_LAUNCHER_PUZZLE_HASH))
76
76
  )
77
77
  return struct
78
78
 
@@ -4,9 +4,9 @@ from dataclasses import dataclass
4
4
  from typing import 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 uint32
7
9
 
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
- from chia.util.ints import uint32
10
10
  from chia.wallet.util.wallet_types import WalletType
11
11
 
12
12
 
@@ -3,10 +3,10 @@ from __future__ import annotations
3
3
  from typing import Optional
4
4
 
5
5
  from chia_rs import AugSchemeMPL, G1Element, PrivateKey
6
+ from chia_rs.sized_bytes import bytes32
7
+ from chia_rs.sized_ints import uint32
6
8
 
7
9
  from chia.consensus.coinbase import create_puzzlehash_for_pk
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
- from chia.util.ints import uint32
10
10
 
11
11
  # EIP 2334 bls key derivation
12
12
  # https://eips.ethereum.org/EIPS/eip-2334
@@ -3,11 +3,12 @@ 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 uint16, uint64
8
+
6
9
  from chia.protocols.wallet_protocol import CoinState
7
10
  from chia.types.blockchain_format.coin import Coin
8
11
  from chia.types.blockchain_format.program import Program
9
- from chia.types.blockchain_format.sized_bytes import bytes32
10
- from chia.util.ints import uint16, uint64
11
12
  from chia.util.streamable import Streamable, streamable
12
13
  from chia.wallet.lineage_proof import LineageProof
13
14
 
@@ -8,19 +8,21 @@ import time
8
8
  from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
9
9
 
10
10
  from chia_rs import AugSchemeMPL, G1Element, G2Element
11
+ from chia_rs.sized_bytes import bytes32
12
+ from chia_rs.sized_ints import uint16, uint32, uint64, uint128
13
+ from typing_extensions import Unpack
11
14
 
12
15
  from chia.protocols.wallet_protocol import CoinState
13
16
  from chia.server.ws_connection import WSChiaConnection
14
17
  from chia.types.blockchain_format.coin import Coin
15
18
  from chia.types.blockchain_format.program import Program
16
- from chia.types.blockchain_format.sized_bytes import bytes32
17
19
  from chia.types.coin_spend import CoinSpend, make_spend
18
20
  from chia.types.signing_mode import CHIP_0002_SIGN_MESSAGE_PREFIX, SigningMode
19
- from chia.util.ints import uint16, uint32, uint64, uint128
20
21
  from chia.wallet.conditions import (
21
22
  AssertCoinAnnouncement,
22
23
  Condition,
23
24
  ConditionValidTimes,
25
+ CreateCoin,
24
26
  CreateCoinAnnouncement,
25
27
  parse_timelock_info,
26
28
  )
@@ -29,7 +31,6 @@ from chia.wallet.did_wallet import did_wallet_puzzles
29
31
  from chia.wallet.did_wallet.did_info import DIDCoinData, DIDInfo
30
32
  from chia.wallet.did_wallet.did_wallet_puzzles import match_did_puzzle, uncurry_innerpuz
31
33
  from chia.wallet.lineage_proof import LineageProof
32
- from chia.wallet.payment import Payment
33
34
  from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import (
34
35
  DEFAULT_HIDDEN_PUZZLE_HASH,
35
36
  calculate_synthetic_secret_key,
@@ -53,7 +54,7 @@ from chia.wallet.wallet import Wallet
53
54
  from chia.wallet.wallet_action_scope import WalletActionScope
54
55
  from chia.wallet.wallet_coin_record import WalletCoinRecord
55
56
  from chia.wallet.wallet_info import WalletInfo
56
- from chia.wallet.wallet_protocol import WalletProtocol
57
+ from chia.wallet.wallet_protocol import GSTOptionalArgs, WalletProtocol
57
58
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
58
59
 
59
60
 
@@ -488,6 +489,7 @@ class DIDWallet:
488
489
 
489
490
  children_state: CoinState = children[0]
490
491
  child_coin = children_state.coin
492
+ assert did_info.current_inner is not None
491
493
  future_parent = LineageProof(
492
494
  parent_name=child_coin.parent_coin_info,
493
495
  inner_puzzle_hash=did_info.current_inner.get_tree_hash(),
@@ -583,7 +585,7 @@ class DIDWallet:
583
585
  # innerpuz solution is (mode, p2_solution)
584
586
  p2_solution = self.standard_wallet.make_solution(
585
587
  primaries=[
586
- Payment(
588
+ CreateCoin(
587
589
  puzzle_hash=new_inner_puzzle.get_tree_hash(),
588
590
  amount=uint64(coin.amount),
589
591
  memos=[p2_puzzle.get_tree_hash()],
@@ -695,7 +697,7 @@ class DIDWallet:
695
697
  metadata=did_wallet_puzzles.metadata_to_program(json.loads(self.did_info.metadata)),
696
698
  )
697
699
  p2_solution = self.standard_wallet.make_solution(
698
- primaries=[Payment(new_did_puzhash, uint64(coin.amount), [new_puzhash])],
700
+ primaries=[CreateCoin(new_did_puzhash, uint64(coin.amount), [new_puzhash])],
699
701
  conditions=(*extra_conditions, CreateCoinAnnouncement(coin.name())),
700
702
  )
701
703
  # Need to include backup list reveal here, even we are don't recover
@@ -765,23 +767,31 @@ class DIDWallet:
765
767
  assert self.did_info.origin_coin is not None
766
768
  coin = await self.get_coin()
767
769
  innerpuz: Program = self.did_info.current_inner
770
+ assert (
771
+ create_singleton_puzzle(
772
+ innerpuz,
773
+ self.did_info.origin_coin.name(),
774
+ ).get_tree_hash()
775
+ == coin.puzzle_hash
776
+ )
777
+ uncurried = did_wallet_puzzles.uncurry_innerpuz(innerpuz)
778
+ assert uncurried is not None
779
+ p2_puzzle, id_list_hash, num_of_backup_ids_needed, _, metadata = uncurried
768
780
  # Quote message puzzle & solution
769
781
  if action_scope.config.tx_config.reuse_puzhash:
770
782
  new_innerpuzzle_hash = innerpuz.get_tree_hash()
771
- uncurried = did_wallet_puzzles.uncurry_innerpuz(innerpuz)
772
- assert uncurried is not None
773
- p2_ph = uncurried[0].get_tree_hash()
783
+ p2_ph = p2_puzzle.get_tree_hash()
774
784
  else:
775
785
  p2_ph = await self.standard_wallet.get_puzzle_hash(new=True)
776
786
  new_innerpuzzle_hash = did_wallet_puzzles.get_inner_puzhash_by_p2(
777
787
  p2_puzhash=p2_ph,
778
- recovery_list=self.did_info.backup_ids,
779
- num_of_backup_ids_needed=self.did_info.num_of_backup_ids_needed,
788
+ recovery_list_hash=bytes32(id_list_hash.as_atom()),
789
+ num_of_backup_ids_needed=uint64(num_of_backup_ids_needed.as_int()),
780
790
  launcher_id=self.did_info.origin_coin.name(),
781
- metadata=did_wallet_puzzles.metadata_to_program(json.loads(self.did_info.metadata)),
791
+ metadata=metadata,
782
792
  )
783
793
  p2_solution = self.standard_wallet.make_solution(
784
- primaries=[Payment(puzzle_hash=new_innerpuzzle_hash, amount=uint64(coin.amount), memos=[p2_ph])],
794
+ primaries=[CreateCoin(puzzle_hash=new_innerpuzzle_hash, amount=uint64(coin.amount), memos=[p2_ph])],
785
795
  conditions=extra_conditions,
786
796
  )
787
797
  # innerpuz solution is (mode p2_solution)
@@ -916,8 +926,8 @@ class DIDWallet:
916
926
  # innerpuz solution is (mode, p2_solution)
917
927
  p2_solution = self.standard_wallet.make_solution(
918
928
  primaries=[
919
- Payment(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()]),
920
- Payment(innermessage, uint64(0)),
929
+ CreateCoin(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()]),
930
+ CreateCoin(innermessage, uint64(0)),
921
931
  ],
922
932
  conditions=extra_conditions,
923
933
  )
@@ -1224,12 +1234,11 @@ class DIDWallet:
1224
1234
  announcement_message = Program.to([did_puzzle_hash, amount, bytes(0x80)]).get_tree_hash()
1225
1235
 
1226
1236
  await self.standard_wallet.generate_signed_transaction(
1227
- amount=amount,
1228
- puzzle_hash=genesis_launcher_puz.get_tree_hash(),
1237
+ amounts=[amount],
1238
+ puzzle_hashes=[genesis_launcher_puz.get_tree_hash()],
1229
1239
  action_scope=action_scope,
1230
1240
  fee=fee,
1231
1241
  coins=coins,
1232
- primaries=None,
1233
1242
  origin_id=origin.name(),
1234
1243
  extra_conditions=(
1235
1244
  AssertCoinAnnouncement(asserted_id=launcher_coin.name(), asserted_msg=announcement_message),
@@ -1309,7 +1318,7 @@ class DIDWallet:
1309
1318
  p2_puzzle = uncurried[0]
1310
1319
  # innerpuz solution is (mode p2_solution)
1311
1320
  p2_solution = self.standard_wallet.make_solution(
1312
- primaries=[Payment(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()])],
1321
+ primaries=[CreateCoin(innerpuz.get_tree_hash(), uint64(coin.amount), [p2_puzzle.get_tree_hash()])],
1313
1322
  conditions=extra_conditions,
1314
1323
  )
1315
1324
  innersol = Program.to([1, p2_solution])
@@ -1492,3 +1501,16 @@ class DIDWallet:
1492
1501
  ).get_tree_hash_precalc(hint)
1493
1502
  == coin.puzzle_hash
1494
1503
  )
1504
+
1505
+ async def generate_signed_transaction(
1506
+ self,
1507
+ amounts: list[uint64],
1508
+ puzzle_hashes: list[bytes32],
1509
+ action_scope: WalletActionScope,
1510
+ fee: uint64 = uint64(0),
1511
+ coins: Optional[set[Coin]] = None,
1512
+ memos: Optional[list[list[bytes]]] = None,
1513
+ extra_conditions: tuple[Condition, ...] = tuple(),
1514
+ **kwargs: Unpack[GSTOptionalArgs],
1515
+ ) -> None:
1516
+ raise NotImplementedError("DIDWallet does not implement `generate_signed_transaction`")
@@ -3,15 +3,15 @@ from __future__ import annotations
3
3
  from collections.abc import Iterator
4
4
  from typing import Optional, Union
5
5
 
6
+ from chia_puzzles_py.programs import DID_INNERPUZ, DID_INNERPUZ_HASH, NFT_INTERMEDIATE_LAUNCHER
6
7
  from chia_rs import G1Element
8
+ from chia_rs.sized_bytes import bytes32
9
+ from chia_rs.sized_ints import uint64
7
10
 
8
11
  from chia.types.blockchain_format.coin import Coin
9
12
  from chia.types.blockchain_format.program import Program
10
- from chia.types.blockchain_format.sized_bytes import bytes32
11
13
  from chia.types.coin_spend import CoinSpend, make_spend
12
14
  from chia.types.condition_opcodes import ConditionOpcode
13
- from chia.util.ints import uint64
14
- from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
15
15
  from chia.wallet.singleton import (
16
16
  SINGLETON_LAUNCHER_PUZZLE_HASH,
17
17
  SINGLETON_LAUNCHER_PUZZLE_HASH_TREE_HASH,
@@ -29,14 +29,10 @@ from chia.wallet.util.curry_and_treehash import (
29
29
  shatree_pair,
30
30
  )
31
31
 
32
- DID_INNERPUZ_MOD = load_clvm_maybe_recompile(
33
- "did_innerpuz.clsp", package_or_requirement="chia.wallet.did_wallet.puzzles"
34
- )
35
- DID_INNERPUZ_MOD_HASH = DID_INNERPUZ_MOD.get_tree_hash()
32
+ DID_INNERPUZ_MOD = Program.from_bytes(DID_INNERPUZ)
33
+ DID_INNERPUZ_MOD_HASH = bytes32(DID_INNERPUZ_HASH)
36
34
  DID_INNERPUZ_MOD_HASH_QUOTED = calculate_hash_of_quoted_mod_hash(DID_INNERPUZ_MOD_HASH)
37
- INTERMEDIATE_LAUNCHER_MOD = load_clvm_maybe_recompile(
38
- "nft_intermediate_launcher.clsp", package_or_requirement="chia.wallet.nft_wallet.puzzles"
39
- )
35
+ INTERMEDIATE_LAUNCHER_MOD = Program.from_bytes(NFT_INTERMEDIATE_LAUNCHER)
40
36
 
41
37
 
42
38
  def create_innerpuz(
@@ -70,10 +66,11 @@ def create_innerpuz(
70
66
 
71
67
  def get_inner_puzhash_by_p2(
72
68
  p2_puzhash: bytes32,
73
- recovery_list: list[bytes32],
74
69
  num_of_backup_ids_needed: uint64,
75
70
  launcher_id: bytes32,
76
71
  metadata: Program = Program.to([]),
72
+ recovery_list: Optional[list[bytes32]] = None,
73
+ recovery_list_hash: Optional[bytes32] = None,
77
74
  ) -> bytes32:
78
75
  """
79
76
  Calculate DID inner puzzle hash based on a P2 puzzle hash
@@ -85,7 +82,16 @@ def get_inner_puzhash_by_p2(
85
82
  :return: DID inner puzzle hash
86
83
  """
87
84
 
88
- backup_ids_hash = shatree_atom_list(recovery_list)
85
+ if recovery_list is None and recovery_list_hash is None:
86
+ raise ValueError("Cannot construct DID inner puzzle without information about recovery list")
87
+ if recovery_list is not None and recovery_list_hash is not None:
88
+ raise ValueError("Must only specify recovery information a single way to construct DID inner puzzle")
89
+
90
+ if recovery_list is not None:
91
+ backup_ids_hash = shatree_atom_list(recovery_list)
92
+ else:
93
+ assert recovery_list_hash is not None
94
+ backup_ids_hash = recovery_list_hash
89
95
 
90
96
  # singleton_struct = (MOD_HASH . (LAUNCHER_ID . LAUNCHER_PUZZLE_HASH))
91
97
  singleton_struct = shatree_pair(
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Optional
4
4
 
5
+ from chia_rs.sized_bytes import bytes32
5
6
  from typing_extensions import Protocol
6
7
 
7
8
  from chia.types.blockchain_format.program import Program
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
9
  from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
10
10
  from chia.wallet.uncurried_puzzle import UncurriedPuzzle
11
11
 
@@ -4,9 +4,10 @@ from dataclasses import dataclass
4
4
  from enum import Enum
5
5
  from typing import Any, Optional
6
6
 
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint64
9
+
7
10
  from chia.types.blockchain_format.program import Program
8
- from chia.types.blockchain_format.sized_bytes import bytes32
9
- from chia.util.ints import uint64
10
11
  from chia.util.streamable import Streamable, streamable
11
12
 
12
13
 
@@ -3,17 +3,16 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from typing import Callable, Optional
5
5
 
6
+ from chia_rs.sized_bytes import bytes32
7
+
6
8
  from chia.types.blockchain_format.program import Program
7
- from chia.types.blockchain_format.sized_bytes import bytes32
9
+ from chia.wallet.nft_wallet.nft_puzzles import (
10
+ NFT_STATE_LAYER_MOD,
11
+ NFT_STATE_LAYER_MOD_HASH,
12
+ )
8
13
  from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
9
- from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
10
14
  from chia.wallet.uncurried_puzzle import UncurriedPuzzle, uncurry_puzzle
11
15
 
12
- NFT_STATE_LAYER_MOD = load_clvm_maybe_recompile(
13
- "nft_state_layer.clsp", package_or_requirement="chia.wallet.nft_wallet.puzzles"
14
- )
15
- NFT_STATE_LAYER_MOD_HASH = NFT_STATE_LAYER_MOD.get_tree_hash()
16
-
17
16
 
18
17
  def match_metadata_layer_puzzle(puzzle: UncurriedPuzzle) -> tuple[bool, list[Program]]:
19
18
  if puzzle.mod == NFT_STATE_LAYER_MOD:
@@ -3,15 +3,15 @@ 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 uint16, uint32, 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
- from chia.util.ints import uint16, uint32, uint64
10
11
  from chia.util.streamable import Streamable, streamable
11
12
  from chia.wallet.lineage_proof import LineageProof
12
- from chia.wallet.puzzles.load_clvm import load_clvm_maybe_recompile
13
+ from chia.wallet.singleton import SINGLETON_LAUNCHER_PUZZLE_HASH
13
14
 
14
- LAUNCHER_PUZZLE = load_clvm_maybe_recompile("singleton_launcher.clsp")
15
15
  IN_TRANSACTION_STATUS = "IN_TRANSACTION"
16
16
  DEFAULT_STATUS = "DEFAULT"
17
17
 
@@ -85,7 +85,7 @@ class NFTInfo(Streamable):
85
85
  minter_did: Optional[bytes32] = None
86
86
  """DID of the NFT minter"""
87
87
 
88
- launcher_puzhash: bytes32 = LAUNCHER_PUZZLE.get_tree_hash()
88
+ launcher_puzhash: bytes32 = SINGLETON_LAUNCHER_PUZZLE_HASH
89
89
  """Puzzle hash of the singleton launcher in hex"""
90
90
 
91
91
  off_chain_metadata: Optional[str] = None