chia-blockchain 2.5.2rc1__py3-none-any.whl → 2.5.3__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 +25 -15
  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.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/METADATA +3 -2
  482. chia_blockchain-2.5.3.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.2rc1.dist-info/RECORD +0 -1042
  638. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/LICENSE +0 -0
  639. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/WHEEL +0 -0
  640. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/entry_points.txt +0 -0
@@ -1,565 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import time
4
- from pathlib import Path
5
- from secrets import token_bytes
6
- from typing import Any, Optional, Union
7
-
8
- import pytest
9
- from typing_extensions import override
10
-
11
- from chia._tests.cmds.cmd_test_utils import TestRpcClients, TestWalletRpcClient, run_cli_command_and_assert
12
- from chia._tests.cmds.wallet.test_consts import FINGERPRINT_ARG, STD_TX, STD_UTX
13
- from chia.rpc.wallet_request_types import (
14
- CreateNewDAOWalletResponse,
15
- DAOAddFundsToTreasuryResponse,
16
- DAOCloseProposalResponse,
17
- DAOCreateProposalResponse,
18
- DAOExitLockupResponse,
19
- DAOFreeCoinsFromFinishedProposalsResponse,
20
- DAOSendToLockupResponse,
21
- DAOVoteOnProposalResponse,
22
- )
23
- from chia.types.blockchain_format.sized_bytes import bytes32
24
- from chia.util.bech32m import encode_puzzle_hash
25
- from chia.util.ints import uint8, uint32, uint64
26
- from chia.wallet.conditions import ConditionValidTimes, parse_timelock_info
27
- from chia.wallet.transaction_record import TransactionRecord
28
- from chia.wallet.util.transaction_type import TransactionType
29
- from chia.wallet.util.tx_config import TXConfig
30
- from chia.wallet.util.wallet_types import WalletType
31
-
32
- # DAO Commands
33
-
34
-
35
- def test_dao_create(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
36
- test_rpc_clients, root_dir = get_test_cli_clients
37
-
38
- # set RPC Client
39
- class DAOCreateRpcClient(TestWalletRpcClient):
40
- async def create_new_dao_wallet(
41
- self,
42
- mode: str,
43
- tx_config: TXConfig,
44
- dao_rules: Optional[dict[str, uint64]] = None,
45
- amount_of_cats: Optional[uint64] = None,
46
- treasury_id: Optional[bytes32] = None,
47
- filter_amount: uint64 = uint64(1),
48
- name: Optional[str] = None,
49
- fee: uint64 = uint64(0),
50
- fee_for_cat: uint64 = uint64(0),
51
- push: bool = True,
52
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
53
- ) -> CreateNewDAOWalletResponse:
54
- if not treasury_id:
55
- treasury_id = bytes32(token_bytes(32))
56
- return CreateNewDAOWalletResponse.from_json_dict(
57
- {
58
- "success": True,
59
- "transactions": [STD_TX.to_json_dict()],
60
- "unsigned_transactions": [STD_UTX.to_json_dict()],
61
- "type": WalletType.DAO,
62
- "wallet_id": 2,
63
- "treasury_id": treasury_id,
64
- "cat_wallet_id": 3,
65
- "dao_cat_wallet_id": 4,
66
- }
67
- )
68
-
69
- inst_rpc_client = DAOCreateRpcClient()
70
- test_rpc_clients.wallet_rpc_client = inst_rpc_client
71
- command_args = [
72
- "dao",
73
- "create",
74
- FINGERPRINT_ARG,
75
- "-n test",
76
- "--attendance-required",
77
- "1000",
78
- "--cat-amount",
79
- "100000",
80
- "-m0.1",
81
- "--reuse",
82
- ]
83
- # these are various things that should be in the output
84
- assert_list = ["Successfully created DAO Wallet", "DAO Wallet ID: 2", "CAT Wallet ID: 3", "DAOCAT Wallet ID: 4"]
85
- run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
86
-
87
- # Check command raises if proposal minimum is even
88
- odd_pm_command_args = [
89
- "dao",
90
- "create",
91
- FINGERPRINT_ARG,
92
- "-n test",
93
- "--attendance-required",
94
- "1000",
95
- "--cat-amount",
96
- "100000",
97
- "--proposal-minimum",
98
- "10",
99
- "-m0.1",
100
- "--reuse",
101
- ]
102
- extra_assert_list = [
103
- "Adding 1 mojo to proposal minimum amount",
104
- ]
105
- run_cli_command_and_assert(capsys, root_dir, odd_pm_command_args, extra_assert_list)
106
-
107
- # Add wallet for existing DAO
108
- add_command_args = [
109
- "dao",
110
- "add",
111
- FINGERPRINT_ARG,
112
- "-n test",
113
- "-t",
114
- bytes32(token_bytes(32)).hex(),
115
- "--filter-amount",
116
- "1",
117
- ]
118
- run_cli_command_and_assert(capsys, root_dir, add_command_args, assert_list)
119
-
120
-
121
- def test_dao_treasury(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
122
- test_rpc_clients, root_dir = get_test_cli_clients
123
-
124
- class DAOCreateRpcClient(TestWalletRpcClient):
125
- async def dao_get_treasury_id(
126
- self,
127
- wallet_id: int,
128
- ) -> dict[str, str]:
129
- return {"treasury_id": "0xCAFEF00D"}
130
-
131
- async def dao_get_treasury_balance(self, wallet_id: int) -> dict[str, Union[str, bool, dict[str, int]]]:
132
- if wallet_id == 2:
133
- return {"success": True, "balances": {"xch": 1000000000000, "0xCAFEF00D": 10000000}}
134
- else:
135
- return {"success": True, "balances": {}}
136
-
137
- async def dao_add_funds_to_treasury(
138
- self,
139
- wallet_id: int,
140
- funding_wallet_id: int,
141
- amount: uint64,
142
- tx_config: TXConfig,
143
- fee: uint64 = uint64(0),
144
- reuse_puzhash: Optional[bool] = None,
145
- push: bool = True,
146
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
147
- ) -> DAOAddFundsToTreasuryResponse:
148
- return DAOAddFundsToTreasuryResponse([STD_UTX], [STD_TX], STD_TX.name, STD_TX)
149
-
150
- async def dao_get_rules(
151
- self,
152
- wallet_id: int,
153
- ) -> dict[str, dict[str, int]]:
154
- return {"rules": {"proposal_minimum": 100}}
155
-
156
- @override
157
- async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
158
- return TransactionRecord(
159
- confirmed_at_height=uint32(0),
160
- created_at_time=uint64(int(time.time())),
161
- to_puzzle_hash=bytes32(b"2" * 32),
162
- amount=uint64(10),
163
- fee_amount=uint64(1),
164
- confirmed=True,
165
- sent=uint32(10),
166
- spend_bundle=None,
167
- additions=[],
168
- removals=[],
169
- wallet_id=uint32(1),
170
- sent_to=[("peer1", uint8(1), None)],
171
- trade_id=None,
172
- type=uint32(TransactionType.INCOMING_TX.value),
173
- name=bytes32(token_bytes()),
174
- memos=[],
175
- valid_times=parse_timelock_info(tuple()),
176
- )
177
-
178
- inst_rpc_client = DAOCreateRpcClient()
179
- test_rpc_clients.wallet_rpc_client = inst_rpc_client
180
-
181
- get_id_args = ["dao", "get_id", FINGERPRINT_ARG, "-i 2"]
182
- get_id_asserts = ["Treasury ID: 0xCAFEF00D"]
183
- run_cli_command_and_assert(capsys, root_dir, get_id_args, get_id_asserts)
184
-
185
- get_balance_args = ["dao", "balance", FINGERPRINT_ARG, "-i 2"]
186
- get_balance_asserts = ["XCH: 1.0", "0xCAFEF00D: 10000.0"]
187
- run_cli_command_and_assert(capsys, root_dir, get_balance_args, get_balance_asserts)
188
-
189
- no_balance_args = ["dao", "balance", FINGERPRINT_ARG, "-i 3"]
190
- no_balance_asserts = ["The DAO treasury currently has no funds"]
191
- run_cli_command_and_assert(capsys, root_dir, no_balance_args, no_balance_asserts)
192
-
193
- add_funds_args = ["dao", "add_funds", FINGERPRINT_ARG, "-i 2", "-w 1", "-a", "10", "-m 0.1", "--reuse"]
194
- add_funds_asserts = [
195
- "Transaction submitted to nodes",
196
- ]
197
- run_cli_command_and_assert(capsys, root_dir, add_funds_args, add_funds_asserts)
198
-
199
- rules_args = ["dao", "rules", FINGERPRINT_ARG, "-i 2"]
200
- rules_asserts = "proposal_minimum: 100"
201
- run_cli_command_and_assert(capsys, root_dir, rules_args, rules_asserts)
202
-
203
-
204
- def test_dao_proposals(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
205
- test_rpc_clients, root_dir = get_test_cli_clients
206
-
207
- # set RPC Client
208
- class DAOCreateRpcClient(TestWalletRpcClient):
209
- async def dao_get_proposals(
210
- self,
211
- wallet_id: int,
212
- include_closed: bool = True,
213
- ) -> dict[str, Union[bool, int, list[Any]]]:
214
- proposal = {
215
- "proposal_id": "0xCAFEF00D",
216
- "amount_voted": uint64(10),
217
- "yes_votes": uint64(10),
218
- "passed": True,
219
- "closed": True,
220
- }
221
- proposal_2 = {
222
- "proposal_id": "0xFEEDBEEF",
223
- "amount_voted": uint64(120),
224
- "yes_votes": uint64(100),
225
- "passed": True,
226
- "closed": False,
227
- }
228
- return {
229
- "success": True,
230
- "proposals": [proposal, proposal_2],
231
- "proposal_timelock": 5,
232
- "soft_close_length": 10,
233
- }
234
-
235
- async def dao_parse_proposal(
236
- self,
237
- wallet_id: int,
238
- proposal_id: str,
239
- ) -> dict[str, Union[bool, dict[str, Any]]]:
240
- if proposal_id == "0xCAFEF00D":
241
- puzhash = bytes32(b"1" * 32).hex()
242
- asset_id = bytes32(b"2" * 32).hex()
243
- proposal_details: dict[str, Any] = {
244
- "proposal_type": "s",
245
- "xch_conditions": [{"puzzle_hash": puzhash, "amount": 100}],
246
- "asset_conditions": [
247
- {"asset_id": asset_id, "conditions": [{"puzzle_hash": puzhash, "amount": 123}]}
248
- ],
249
- }
250
- elif proposal_id == "0xFEEDBEEF":
251
- proposal_details = {
252
- "proposal_type": "u",
253
- "dao_rules": {
254
- "proposal_timelock": 10,
255
- "soft_close_length": 50,
256
- },
257
- }
258
- else:
259
- proposal_details = {
260
- "proposal_type": "s",
261
- "mint_amount": 1000,
262
- "new_cat_puzhash": bytes32(b"x" * 32).hex(),
263
- }
264
- proposal_state = {
265
- "state": {
266
- "passed": False,
267
- "closable": False,
268
- "closed": False,
269
- "total_votes_needed": 10,
270
- "yes_votes_needed": 20,
271
- "blocks_needed": 30,
272
- }
273
- }
274
- proposal_dict = {**proposal_state, **proposal_details}
275
- return {"success": True, "proposal_dictionary": proposal_dict}
276
-
277
- async def dao_vote_on_proposal(
278
- self,
279
- wallet_id: int,
280
- proposal_id: str,
281
- vote_amount: int,
282
- tx_config: TXConfig,
283
- is_yes_vote: bool,
284
- fee: uint64 = uint64(0),
285
- push: bool = True,
286
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
287
- ) -> DAOVoteOnProposalResponse:
288
- return DAOVoteOnProposalResponse([STD_UTX], [STD_TX], STD_TX.name, STD_TX)
289
-
290
- async def dao_close_proposal(
291
- self,
292
- wallet_id: int,
293
- proposal_id: str,
294
- tx_config: TXConfig,
295
- fee: uint64 = uint64(0),
296
- self_destruct: bool = False,
297
- reuse_puzhash: Optional[bool] = None,
298
- push: bool = True,
299
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
300
- ) -> DAOCloseProposalResponse:
301
- return DAOCloseProposalResponse([STD_UTX], [STD_TX], STD_TX.name, STD_TX)
302
-
303
- async def dao_create_proposal(
304
- self,
305
- wallet_id: int,
306
- proposal_type: str,
307
- tx_config: TXConfig,
308
- additions: Optional[list[dict[str, Any]]] = None,
309
- amount: Optional[uint64] = None,
310
- inner_address: Optional[str] = None,
311
- asset_id: Optional[str] = None,
312
- cat_target_address: Optional[str] = None,
313
- vote_amount: Optional[int] = None,
314
- new_dao_rules: Optional[dict[str, uint64]] = None,
315
- fee: uint64 = uint64(0),
316
- reuse_puzhash: Optional[bool] = None,
317
- push: bool = True,
318
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
319
- ) -> DAOCreateProposalResponse:
320
- return DAOCreateProposalResponse([STD_UTX], [STD_TX], bytes32.zeros, STD_TX.name, STD_TX)
321
-
322
- async def get_wallets(self, wallet_type: Optional[WalletType] = None) -> list[dict[str, Union[str, int]]]:
323
- return [{"id": 1, "type": 0}, {"id": 2, "type": 14}]
324
-
325
- @override
326
- async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
327
- return TransactionRecord(
328
- confirmed_at_height=uint32(0),
329
- created_at_time=uint64(int(time.time())),
330
- to_puzzle_hash=bytes32(b"2" * 32),
331
- amount=uint64(10),
332
- fee_amount=uint64(1),
333
- confirmed=True,
334
- sent=uint32(10),
335
- spend_bundle=None,
336
- additions=[],
337
- removals=[],
338
- wallet_id=uint32(1),
339
- sent_to=[("peer1", uint8(1), None)],
340
- trade_id=None,
341
- type=uint32(TransactionType.INCOMING_TX.value),
342
- name=bytes32(b"x" * 32),
343
- memos=[],
344
- valid_times=parse_timelock_info(tuple()),
345
- )
346
-
347
- # List all proposals
348
- inst_rpc_client = DAOCreateRpcClient()
349
- test_rpc_clients.wallet_rpc_client = inst_rpc_client
350
- list_args = ["dao", "list_proposals", FINGERPRINT_ARG, "-i 2"]
351
- # these are various things that should be in the output
352
- list_asserts = [
353
- "Proposal ID: 0xCAFEF00D",
354
- "Status: OPEN",
355
- "Votes for: 10",
356
- "Votes against: 0",
357
- "Proposal ID: 0xFEEDBEEF",
358
- "Status: CLOSED",
359
- "Votes for: 100",
360
- "Votes against: 20",
361
- "Proposals have 10 blocks of soft close time.",
362
- ]
363
- run_cli_command_and_assert(capsys, root_dir, list_args, list_asserts)
364
-
365
- # Show details of specific proposal
366
- parse_spend_args = ["dao", "show_proposal", FINGERPRINT_ARG, "-i 2", "-p", "0xCAFEF00D"]
367
- address = encode_puzzle_hash(bytes32(b"1" * 32), "xch")
368
- asset_id = bytes32(b"2" * 32).hex()
369
- parse_spend_asserts = [
370
- "Type: SPEND",
371
- "Status: OPEN",
372
- "Passed: False",
373
- "Closable: False",
374
- "Total votes needed: 10",
375
- "Yes votes needed: 20",
376
- "Blocks remaining: 30",
377
- "Proposal XCH Conditions",
378
- f"Address: {address}",
379
- "Amount: 100",
380
- "Proposal asset Conditions",
381
- f"Asset ID: {asset_id}",
382
- f"Address: {address}",
383
- "Amount: 123",
384
- ]
385
- run_cli_command_and_assert(capsys, root_dir, parse_spend_args, parse_spend_asserts)
386
-
387
- parse_update_args = ["dao", "show_proposal", FINGERPRINT_ARG, "-i2", "-p", "0xFEEDBEEF"]
388
- parse_update_asserts = [
389
- "Type: UPDATE",
390
- "proposal_timelock: 10",
391
- "soft_close_length: 50",
392
- ]
393
- run_cli_command_and_assert(capsys, root_dir, parse_update_args, parse_update_asserts)
394
-
395
- parse_mint_args = ["dao", "show_proposal", FINGERPRINT_ARG, "-i2", "-p", "0xDABBAD00"]
396
- parse_mint_asserts = [
397
- "Type: MINT",
398
- "Amount of CAT to mint: 1000",
399
- f"Address: {encode_puzzle_hash(bytes32(b'x' * 32), 'xch')}",
400
- ]
401
- run_cli_command_and_assert(capsys, root_dir, parse_mint_args, parse_mint_asserts)
402
-
403
- # Vote on a proposal
404
- vote_args = ["dao", "vote", FINGERPRINT_ARG, "-i 2", "-p", "0xFEEDBEEF", "-a", "1000", "-n", "-m 0.1", "--reuse"]
405
- vote_asserts = ["Transaction submitted to nodes"]
406
- run_cli_command_and_assert(capsys, root_dir, vote_args, vote_asserts)
407
-
408
- # Close a proposal
409
- close_args = ["dao", "close_proposal", FINGERPRINT_ARG, "-i 2", "-p", "0xFEEDBEEF", "-d", "-m 0.1", "--reuse"]
410
- close_asserts = ["Transaction submitted to nodes"]
411
- run_cli_command_and_assert(capsys, root_dir, close_args, close_asserts)
412
-
413
- # Create a spend proposal
414
- address = encode_puzzle_hash(bytes32(b"x" * 32), "xch")
415
- spend_args = [
416
- "dao",
417
- "create_proposal",
418
- "spend",
419
- FINGERPRINT_ARG,
420
- "-i 2",
421
- "-t",
422
- address,
423
- "-a",
424
- "10",
425
- "-v",
426
- "1000",
427
- "--asset-id",
428
- "0xFEEDBEEF",
429
- "-m 0.1",
430
- "--reuse",
431
- ]
432
- proposal_asserts = ["Successfully created proposal", f"Proposal ID: {bytes32.zeros.hex()}"]
433
- run_cli_command_and_assert(capsys, root_dir, spend_args, proposal_asserts)
434
-
435
- bad_spend_args = [
436
- "dao",
437
- "create_proposal",
438
- "spend",
439
- FINGERPRINT_ARG,
440
- "-i 2",
441
- "-t",
442
- address,
443
- "-v",
444
- "1000",
445
- "--asset-id",
446
- "0xFEEDBEEF",
447
- "-m 0.1",
448
- "--reuse",
449
- ]
450
- proposal_asserts = ["Successfully created proposal", f"Proposal ID: {bytes32.zeros.hex()}"]
451
- with pytest.raises(ValueError) as e_info:
452
- run_cli_command_and_assert(capsys, root_dir, bad_spend_args, proposal_asserts)
453
- assert e_info.value.args[0] == "Must include a json specification or an address / amount pair."
454
-
455
- # Create an update proposal
456
- update_args = [
457
- "dao",
458
- "create_proposal",
459
- "update",
460
- FINGERPRINT_ARG,
461
- "-i 2",
462
- "-v",
463
- "1000",
464
- "--proposal-timelock",
465
- "4",
466
- "-m 0.1",
467
- "--reuse",
468
- ]
469
- run_cli_command_and_assert(capsys, root_dir, update_args, proposal_asserts)
470
-
471
- # Create a mint proposal
472
- mint_args = [
473
- "dao",
474
- "create_proposal",
475
- "mint",
476
- FINGERPRINT_ARG,
477
- "-i 2",
478
- "-v",
479
- "1000",
480
- "-a",
481
- "100",
482
- "-t",
483
- address,
484
- "-m 0.1",
485
- "--reuse",
486
- ]
487
- run_cli_command_and_assert(capsys, root_dir, mint_args, proposal_asserts)
488
-
489
-
490
- def test_dao_cats(capsys: object, get_test_cli_clients: tuple[TestRpcClients, Path]) -> None:
491
- test_rpc_clients, root_dir = get_test_cli_clients
492
-
493
- # set RPC Client
494
- class DAOCreateRpcClient(TestWalletRpcClient):
495
- async def dao_send_to_lockup(
496
- self,
497
- wallet_id: int,
498
- amount: uint64,
499
- tx_config: TXConfig,
500
- fee: uint64 = uint64(0),
501
- reuse_puzhash: Optional[bool] = None,
502
- push: bool = True,
503
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
504
- ) -> DAOSendToLockupResponse:
505
- return DAOSendToLockupResponse([STD_UTX], [STD_TX], STD_TX.name, [STD_TX])
506
-
507
- async def dao_free_coins_from_finished_proposals(
508
- self,
509
- wallet_id: int,
510
- tx_config: TXConfig,
511
- fee: uint64 = uint64(0),
512
- reuse_puzhash: Optional[bool] = None,
513
- push: bool = True,
514
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
515
- ) -> DAOFreeCoinsFromFinishedProposalsResponse:
516
- return DAOFreeCoinsFromFinishedProposalsResponse([STD_UTX], [STD_TX], STD_TX.name, STD_TX)
517
-
518
- async def dao_exit_lockup(
519
- self,
520
- wallet_id: int,
521
- tx_config: TXConfig,
522
- coins: Optional[list[dict[str, Union[str, int]]]] = None,
523
- fee: uint64 = uint64(0),
524
- reuse_puzhash: Optional[bool] = None,
525
- push: bool = True,
526
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
527
- ) -> DAOExitLockupResponse:
528
- return DAOExitLockupResponse([STD_UTX], [STD_TX], STD_TX.name, STD_TX)
529
-
530
- @override
531
- async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
532
- return TransactionRecord(
533
- confirmed_at_height=uint32(0),
534
- created_at_time=uint64(int(time.time())),
535
- to_puzzle_hash=bytes32(b"2" * 32),
536
- amount=uint64(10),
537
- fee_amount=uint64(1),
538
- confirmed=True,
539
- sent=uint32(10),
540
- spend_bundle=None,
541
- additions=[],
542
- removals=[],
543
- wallet_id=uint32(1),
544
- sent_to=[("peer1", uint8(1), None)],
545
- trade_id=None,
546
- type=uint32(TransactionType.INCOMING_TX.value),
547
- name=bytes32(b"x" * 32),
548
- memos=[],
549
- valid_times=parse_timelock_info(tuple()),
550
- )
551
-
552
- inst_rpc_client = DAOCreateRpcClient()
553
- test_rpc_clients.wallet_rpc_client = inst_rpc_client
554
- lockup_args = ["dao", "lockup_coins", FINGERPRINT_ARG, "-i 2", "-a", "1000", "-m 0.1", "--reuse"]
555
- lockup_asserts = ["Transaction submitted to nodes"]
556
- run_cli_command_and_assert(capsys, root_dir, lockup_args, lockup_asserts)
557
-
558
- release_args = ["dao", "release_coins", FINGERPRINT_ARG, "-i 2", "-m 0.1", "--reuse"]
559
- # tx_id = bytes32(b"x" * 32).hex()
560
- release_asserts = ["Transaction submitted to nodes"]
561
- run_cli_command_and_assert(capsys, root_dir, release_args, release_asserts)
562
-
563
- exit_args = ["dao", "exit_lockup", FINGERPRINT_ARG, "-i 2", "-m 0.1", "--reuse"]
564
- exit_asserts = ["Transaction submitted to nodes"]
565
- run_cli_command_and_assert(capsys, root_dir, exit_args, exit_asserts)
File without changes
@@ -1,3 +0,0 @@
1
- from __future__ import annotations
2
-
3
- checkout_blocks_and_plots = True