chia-blockchain 2.5.2rc2__py3-none-any.whl → 2.5.3rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. chia/__init__.py +7 -0
  2. chia/_tests/blockchain/blockchain_test_utils.py +1 -1
  3. chia/_tests/blockchain/test_augmented_chain.py +54 -5
  4. chia/_tests/blockchain/test_blockchain.py +5 -12
  5. chia/_tests/blockchain/test_blockchain_transactions.py +3 -5
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -2
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +2 -2
  8. chia/_tests/clvm/benchmark_costs.py +2 -1
  9. chia/_tests/clvm/coin_store.py +4 -3
  10. chia/_tests/clvm/test_chialisp_deserialization.py +2 -2
  11. chia/_tests/clvm/test_curry_and_treehash.py +1 -1
  12. chia/_tests/clvm/test_puzzle_compression.py +2 -2
  13. chia/_tests/clvm/test_puzzles.py +2 -2
  14. chia/_tests/clvm/test_singletons.py +2 -2
  15. chia/_tests/clvm/test_spend_sim.py +1 -1
  16. chia/_tests/cmds/cmd_test_utils.py +2 -2
  17. chia/_tests/cmds/test_click_types.py +2 -2
  18. chia/_tests/cmds/test_cmd_framework.py +6 -6
  19. chia/_tests/cmds/test_show.py +4 -3
  20. chia/_tests/cmds/test_tx_config_args.py +1 -1
  21. chia/_tests/cmds/testing_classes.py +2 -2
  22. chia/_tests/cmds/wallet/test_consts.py +2 -2
  23. chia/_tests/cmds/wallet/test_did.py +2 -2
  24. chia/_tests/cmds/wallet/test_nft.py +2 -2
  25. chia/_tests/cmds/wallet/test_notifications.py +3 -2
  26. chia/_tests/cmds/wallet/test_vcs.py +2 -2
  27. chia/_tests/cmds/wallet/test_wallet.py +4 -8
  28. chia/_tests/conftest.py +4 -3
  29. chia/_tests/connection_utils.py +2 -2
  30. chia/_tests/core/cmds/test_keys.py +1 -2
  31. chia/_tests/core/cmds/test_wallet.py +2 -2
  32. chia/_tests/core/consensus/test_block_creation.py +2 -2
  33. chia/_tests/core/consensus/test_pot_iterations.py +1 -1
  34. chia/_tests/core/custom_types/test_coin.py +2 -2
  35. chia/_tests/core/custom_types/test_proof_of_space.py +2 -2
  36. chia/_tests/core/custom_types/test_spend_bundle.py +2 -2
  37. chia/_tests/core/data_layer/conftest.py +1 -1
  38. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  39. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  40. chia/_tests/core/data_layer/test_data_rpc.py +2 -2
  41. chia/_tests/core/data_layer/test_data_store.py +1 -1
  42. chia/_tests/core/data_layer/test_data_store_schema.py +1 -1
  43. chia/_tests/core/data_layer/util.py +2 -1
  44. chia/_tests/core/farmer/test_farmer_api.py +1 -1
  45. chia/_tests/core/full_node/full_sync/test_full_sync.py +1 -7
  46. chia/_tests/core/full_node/ram_db.py +2 -1
  47. chia/_tests/core/full_node/stores/test_block_store.py +2 -2
  48. chia/_tests/core/full_node/stores/test_coin_store.py +2 -2
  49. chia/_tests/core/full_node/stores/test_full_node_store.py +3 -3
  50. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  51. chia/_tests/core/full_node/stores/test_sync_store.py +1 -1
  52. chia/_tests/core/full_node/test_address_manager.py +1 -1
  53. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  54. chia/_tests/core/full_node/test_conditions.py +1 -1
  55. chia/_tests/core/full_node/test_full_node.py +346 -164
  56. chia/_tests/core/full_node/test_generator_tools.py +3 -2
  57. chia/_tests/core/full_node/test_hint_management.py +2 -2
  58. chia/_tests/core/full_node/test_performance.py +2 -15
  59. chia/_tests/core/full_node/test_subscriptions.py +1 -1
  60. chia/_tests/core/full_node/test_transactions.py +186 -185
  61. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -1
  62. chia/_tests/core/make_block_generator.py +2 -2
  63. chia/_tests/core/mempool/test_mempool.py +165 -22
  64. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  65. chia/_tests/core/mempool/test_mempool_fee_protocol.py +1 -1
  66. chia/_tests/core/mempool/test_mempool_manager.py +476 -66
  67. chia/_tests/core/mempool/test_mempool_performance.py +2 -2
  68. chia/_tests/core/mempool/test_singleton_fast_forward.py +19 -25
  69. chia/_tests/core/node_height.py +2 -1
  70. chia/_tests/core/server/test_capabilities.py +1 -1
  71. chia/_tests/core/server/test_dos.py +36 -28
  72. chia/_tests/core/server/test_loop.py +3 -3
  73. chia/_tests/core/server/test_rate_limits.py +1 -1
  74. chia/_tests/core/server/test_server.py +2 -2
  75. chia/_tests/core/services/test_services.py +1 -1
  76. chia/_tests/core/ssl/test_ssl.py +1 -1
  77. chia/_tests/core/test_coins.py +2 -1
  78. chia/_tests/core/test_cost_calculation.py +2 -2
  79. chia/_tests/core/test_crawler.py +2 -2
  80. chia/_tests/core/test_db_conversion.py +2 -2
  81. chia/_tests/core/test_db_validation.py +26 -13
  82. chia/_tests/core/test_farmer_harvester_rpc.py +2 -2
  83. chia/_tests/core/test_full_node_rpc.py +2 -2
  84. chia/_tests/core/test_merkle_set.py +2 -2
  85. chia/_tests/core/test_program.py +2 -2
  86. chia/_tests/core/test_rpc_util.py +1 -1
  87. chia/_tests/core/test_seeder.py +1 -1
  88. chia/_tests/core/util/test_block_cache.py +3 -3
  89. chia/_tests/core/util/test_jsonify.py +3 -2
  90. chia/_tests/core/util/test_keychain.py +3 -3
  91. chia/_tests/core/util/test_streamable.py +3 -4
  92. chia/_tests/environments/wallet.py +3 -2
  93. chia/_tests/farmer_harvester/test_farmer.py +3 -4
  94. chia/_tests/farmer_harvester/test_farmer_harvester.py +2 -2
  95. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +2 -2
  96. chia/_tests/farmer_harvester/test_third_party_harvesters.py +3 -4
  97. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -1
  98. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +2 -2
  99. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  100. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +3 -4
  101. chia/_tests/generator/test_compression.py +20 -10
  102. chia/_tests/generator/test_rom.py +7 -9
  103. chia/_tests/plot_sync/test_delta.py +2 -2
  104. chia/_tests/plot_sync/test_plot_sync.py +2 -2
  105. chia/_tests/plot_sync/test_receiver.py +2 -2
  106. chia/_tests/plot_sync/test_sender.py +2 -2
  107. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  108. chia/_tests/plot_sync/util.py +3 -2
  109. chia/_tests/plotting/test_plot_manager.py +1 -1
  110. chia/_tests/pools/test_pool_cli_parsing.py +3 -2
  111. chia/_tests/pools/test_pool_cmdline.py +2 -2
  112. chia/_tests/pools/test_pool_puzzles_lifecycle.py +3 -3
  113. chia/_tests/pools/test_pool_rpc.py +4 -5
  114. chia/_tests/pools/test_pool_wallet.py +1 -1
  115. chia/_tests/pools/test_wallet_pool_store.py +2 -2
  116. chia/_tests/rpc/test_rpc_client.py +1 -1
  117. chia/_tests/rpc/test_rpc_server.py +1 -1
  118. chia/_tests/simulation/test_simulation.py +36 -8
  119. chia/_tests/simulation/test_simulator.py +5 -5
  120. chia/_tests/simulation/test_start_simulator.py +2 -2
  121. chia/_tests/timelord/test_new_peak.py +2 -2
  122. chia/_tests/tools/test_run_block.py +3 -2
  123. chia/_tests/util/benchmark_cost.py +2 -2
  124. chia/_tests/util/benchmarks.py +17 -6
  125. chia/_tests/util/blockchain.py +2 -1
  126. chia/_tests/util/blockchain_mock.py +9 -5
  127. chia/_tests/util/build_network_protocol_files.py +2 -1
  128. chia/_tests/util/constants.py +2 -1
  129. chia/_tests/util/full_sync.py +6 -3
  130. chia/_tests/util/gen_ssl_certs.py +2 -2
  131. chia/_tests/util/generator_tools_testing.py +4 -3
  132. chia/_tests/util/get_name_puzzle_conditions.py +2 -2
  133. chia/_tests/util/misc.py +16 -2
  134. chia/_tests/util/network_protocol_data.py +17 -7
  135. chia/_tests/util/run_block.py +6 -8
  136. chia/_tests/util/setup_nodes.py +4 -3
  137. chia/_tests/util/spend_sim.py +9 -5
  138. chia/_tests/util/test_condition_tools.py +2 -2
  139. chia/_tests/util/test_config.py +2 -1
  140. chia/_tests/util/test_errors.py +2 -1
  141. chia/_tests/util/test_full_block_utils.py +17 -7
  142. chia/_tests/util/test_misc.py +1 -1
  143. chia/_tests/util/test_network_protocol_test.py +24 -24
  144. chia/_tests/util/test_replace_str_to_bytes.py +2 -2
  145. chia/_tests/util/test_trusted_peer.py +1 -1
  146. chia/_tests/util/time_out_assert.py +20 -7
  147. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  148. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -2
  149. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +5 -6
  150. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +17 -15
  151. chia/_tests/wallet/cat_wallet/test_trades.py +2 -2
  152. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -2
  153. chia/_tests/wallet/clawback/test_clawback_metadata.py +2 -2
  154. chia/_tests/wallet/conftest.py +3 -3
  155. chia/_tests/wallet/db_wallet/test_db_graftroot.py +3 -5
  156. chia/_tests/wallet/db_wallet/test_dl_offers.py +2 -2
  157. chia/_tests/wallet/db_wallet/test_dl_wallet.py +433 -384
  158. chia/_tests/wallet/did_wallet/test_did.py +3 -3
  159. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +2 -2
  160. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +2 -2
  161. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +3 -4
  162. chia/_tests/wallet/nft_wallet/test_nft_offers.py +1293 -703
  163. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +28 -30
  164. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2 -2
  165. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +2 -2
  166. chia/_tests/wallet/rpc/config.py +1 -1
  167. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +2 -2
  168. chia/_tests/wallet/rpc/test_wallet_rpc.py +20 -77
  169. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +9 -7
  170. chia/_tests/wallet/sync/test_wallet_sync.py +79 -31
  171. chia/_tests/wallet/test_clvm_streamable.py +2 -2
  172. chia/_tests/wallet/test_coin_management.py +7 -7
  173. chia/_tests/wallet/test_coin_selection.py +20 -2
  174. chia/_tests/wallet/test_conditions.py +2 -2
  175. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  176. chia/_tests/wallet/test_new_wallet_protocol.py +2 -2
  177. chia/_tests/wallet/test_nft_store.py +2 -2
  178. chia/_tests/wallet/test_notifications.py +2 -2
  179. chia/_tests/wallet/test_puzzle_store.py +2 -2
  180. chia/_tests/wallet/test_sign_coin_spends.py +2 -2
  181. chia/_tests/wallet/test_signer_protocol.py +3 -3
  182. chia/_tests/wallet/test_singleton.py +3 -11
  183. chia/_tests/wallet/test_singleton_lifecycle_fast.py +12 -13
  184. chia/_tests/wallet/test_singleton_store.py +2 -4
  185. chia/_tests/wallet/test_transaction_store.py +2 -2
  186. chia/_tests/wallet/test_util.py +2 -2
  187. chia/_tests/wallet/test_wallet.py +53 -49
  188. chia/_tests/wallet/test_wallet_action_scope.py +24 -6
  189. chia/_tests/wallet/test_wallet_blockchain.py +1 -1
  190. chia/_tests/wallet/test_wallet_coin_store.py +2 -2
  191. chia/_tests/wallet/test_wallet_interested_store.py +2 -2
  192. chia/_tests/wallet/test_wallet_node.py +3 -3
  193. chia/_tests/wallet/test_wallet_retry.py +3 -3
  194. chia/_tests/wallet/test_wallet_state_manager.py +8 -8
  195. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  196. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  197. chia/_tests/wallet/test_wallet_utils.py +2 -2
  198. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -2
  199. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +15 -15
  200. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +5 -3
  201. chia/_tests/wallet/wallet_block_tools.py +15 -7
  202. chia/_tests/weight_proof/test_weight_proof.py +3 -3
  203. chia/cmds/chia.py +0 -2
  204. chia/cmds/cmd_classes.py +3 -3
  205. chia/cmds/cmd_helpers.py +4 -4
  206. chia/cmds/cmds_util.py +2 -2
  207. chia/cmds/coin_funcs.py +3 -2
  208. chia/cmds/coins.py +1 -1
  209. chia/cmds/data.py +2 -2
  210. chia/cmds/data_funcs.py +3 -2
  211. chia/cmds/db_upgrade_func.py +2 -2
  212. chia/cmds/db_validate_func.py +15 -8
  213. chia/cmds/farm.py +2 -4
  214. chia/cmds/keys.py +0 -2
  215. chia/cmds/keys_funcs.py +1 -1
  216. chia/cmds/netspace_funcs.py +2 -1
  217. chia/cmds/param_types.py +2 -2
  218. chia/cmds/plotnft.py +2 -2
  219. chia/cmds/plotnft_funcs.py +2 -2
  220. chia/cmds/rpc.py +1 -1
  221. chia/cmds/show.py +1 -2
  222. chia/cmds/show_funcs.py +6 -3
  223. chia/cmds/signer.py +1 -2
  224. chia/cmds/sim.py +1 -2
  225. chia/cmds/sim_funcs.py +2 -2
  226. chia/cmds/wallet.py +2 -2
  227. chia/cmds/wallet_funcs.py +4 -11
  228. chia/consensus/block_body_validation.py +3 -4
  229. chia/consensus/block_creation.py +10 -6
  230. chia/consensus/block_header_validation.py +3 -4
  231. chia/consensus/block_record.py +2 -3
  232. chia/consensus/block_rewards.py +1 -1
  233. chia/consensus/blockchain.py +20 -17
  234. chia/consensus/blockchain_interface.py +5 -4
  235. chia/consensus/coinbase.py +2 -2
  236. chia/consensus/constants.py +1 -1
  237. chia/consensus/cost_calculator.py +2 -1
  238. chia/consensus/default_constants.py +4 -3
  239. chia/consensus/deficit.py +3 -2
  240. chia/consensus/difficulty_adjustment.py +8 -9
  241. chia/consensus/find_fork_point.py +4 -3
  242. chia/consensus/full_block_to_block_record.py +4 -3
  243. chia/consensus/get_block_challenge.py +4 -3
  244. chia/consensus/get_block_generator.py +3 -2
  245. chia/consensus/make_sub_epoch_summary.py +3 -2
  246. chia/consensus/multiprocess_validation.py +9 -4
  247. chia/consensus/pos_quality.py +1 -1
  248. chia/consensus/pot_iterations.py +4 -3
  249. chia/consensus/vdf_info_computation.py +4 -3
  250. chia/daemon/client.py +1 -1
  251. chia/daemon/keychain_server.py +1 -1
  252. chia/daemon/server.py +1 -1
  253. chia/daemon/windows_signal.py +1 -1
  254. chia/data_layer/data_layer.py +4 -3
  255. chia/data_layer/data_layer_errors.py +1 -1
  256. chia/data_layer/data_layer_util.py +2 -2
  257. chia/data_layer/data_layer_wallet.py +47 -69
  258. chia/data_layer/data_store.py +1 -1
  259. chia/data_layer/dl_wallet_store.py +5 -6
  260. chia/data_layer/download_data.py +1 -1
  261. chia/data_layer/s3_plugin_service.py +4 -4
  262. chia/data_layer/singleton_record.py +23 -0
  263. chia/data_layer/util/benchmark.py +2 -1
  264. chia/farmer/farmer.py +4 -6
  265. chia/farmer/farmer_api.py +4 -6
  266. chia/full_node/bitcoin_fee_estimator.py +2 -1
  267. chia/full_node/block_height_map.py +2 -2
  268. chia/full_node/block_store.py +8 -9
  269. chia/{util → full_node}/check_fork_next_block.py +2 -1
  270. chia/full_node/coin_store.py +10 -10
  271. chia/full_node/fee_estimate.py +2 -1
  272. chia/full_node/fee_estimation.py +2 -1
  273. chia/full_node/fee_estimator.py +2 -1
  274. chia/full_node/fee_estimator_interface.py +1 -1
  275. chia/full_node/fee_history.py +2 -1
  276. chia/full_node/fee_tracker.py +2 -1
  277. chia/full_node/full_node.py +15 -13
  278. chia/full_node/full_node_api.py +12 -32
  279. chia/full_node/full_node_store.py +4 -3
  280. chia/full_node/hint_management.py +2 -1
  281. chia/full_node/hint_store.py +3 -3
  282. chia/full_node/mempool.py +79 -12
  283. chia/full_node/mempool_check_conditions.py +6 -7
  284. chia/full_node/mempool_manager.py +168 -21
  285. chia/full_node/pending_tx_cache.py +2 -2
  286. chia/full_node/subscriptions.py +2 -2
  287. chia/full_node/sync_store.py +2 -3
  288. chia/full_node/tx_processing_queue.py +2 -1
  289. chia/full_node/weight_proof.py +5 -8
  290. chia/harvester/harvester.py +5 -3
  291. chia/harvester/harvester_api.py +2 -2
  292. chia/introducer/introducer.py +30 -2
  293. chia/introducer/introducer_api.py +9 -1
  294. chia/legacy/keyring.py +1 -2
  295. chia/plot_sync/exceptions.py +2 -1
  296. chia/plot_sync/receiver.py +2 -2
  297. chia/plot_sync/sender.py +1 -1
  298. chia/plotting/cache.py +2 -2
  299. chia/plotting/check_plots.py +4 -2
  300. chia/plotting/create_plots.py +1 -1
  301. chia/plotting/manager.py +3 -3
  302. chia/plotting/util.py +2 -2
  303. chia/pools/pool_config.py +1 -1
  304. chia/pools/pool_puzzles.py +23 -17
  305. chia/pools/pool_wallet.py +22 -9
  306. chia/pools/pool_wallet_info.py +2 -2
  307. chia/protocols/farmer_protocol.py +3 -6
  308. chia/protocols/full_node_protocol.py +3 -2
  309. chia/protocols/harvester_protocol.py +3 -4
  310. chia/protocols/pool_protocol.py +2 -2
  311. chia/protocols/shared_protocol.py +2 -1
  312. chia/protocols/timelord_protocol.py +4 -4
  313. chia/protocols/wallet_protocol.py +2 -2
  314. chia/rpc/data_layer_rpc_api.py +3 -4
  315. chia/rpc/data_layer_rpc_client.py +3 -2
  316. chia/rpc/farmer_rpc_api.py +2 -2
  317. chia/rpc/farmer_rpc_client.py +2 -1
  318. chia/rpc/full_node_rpc_api.py +3 -2
  319. chia/rpc/full_node_rpc_client.py +3 -2
  320. chia/rpc/harvester_rpc_api.py +2 -1
  321. chia/rpc/rpc_client.py +2 -2
  322. chia/rpc/rpc_server.py +1 -1
  323. chia/rpc/wallet_request_types.py +2 -62
  324. chia/rpc/wallet_rpc_api.py +98 -628
  325. chia/rpc/wallet_rpc_client.py +5 -253
  326. chia/seeder/crawl_store.py +1 -1
  327. chia/seeder/crawler.py +2 -2
  328. chia/seeder/peer_record.py +2 -1
  329. chia/seeder/start_crawler.py +3 -1
  330. chia/server/address_manager.py +2 -1
  331. chia/server/address_manager_store.py +1 -1
  332. chia/server/capabilities.py +2 -1
  333. chia/server/introducer_peers.py +2 -1
  334. chia/server/node_discovery.py +1 -1
  335. chia/server/outbound_message.py +2 -1
  336. chia/server/server.py +2 -2
  337. chia/server/start_data_layer.py +2 -1
  338. chia/server/start_farmer.py +3 -1
  339. chia/server/start_full_node.py +4 -2
  340. chia/server/start_harvester.py +3 -1
  341. chia/server/start_introducer.py +12 -1
  342. chia/server/start_service.py +2 -1
  343. chia/server/start_timelord.py +3 -1
  344. chia/server/start_wallet.py +3 -1
  345. chia/server/upnp.py +1 -2
  346. chia/server/ws_connection.py +3 -4
  347. chia/simulator/add_blocks_in_batches.py +5 -3
  348. chia/simulator/block_tools.py +16 -12
  349. chia/simulator/full_node_simulator.py +9 -14
  350. chia/simulator/setup_services.py +5 -3
  351. chia/simulator/simulator_full_node_rpc_api.py +3 -2
  352. chia/simulator/simulator_full_node_rpc_client.py +3 -2
  353. chia/simulator/simulator_protocol.py +3 -2
  354. chia/simulator/simulator_test_tools.py +2 -2
  355. chia/simulator/start_simulator.py +3 -2
  356. chia/simulator/wallet_tools.py +3 -4
  357. chia/timelord/iters_from_block.py +4 -4
  358. chia/timelord/timelord.py +7 -12
  359. chia/timelord/timelord_api.py +3 -3
  360. chia/timelord/timelord_state.py +4 -3
  361. chia/types/block_protocol.py +2 -2
  362. chia/types/blockchain_format/coin.py +2 -2
  363. chia/types/blockchain_format/program.py +1 -1
  364. chia/types/blockchain_format/proof_of_space.py +3 -4
  365. chia/types/blockchain_format/tree_hash.py +1 -1
  366. chia/types/blockchain_format/vdf.py +3 -4
  367. chia/types/clvm_cost.py +1 -1
  368. chia/types/coin_record.py +4 -3
  369. chia/types/coin_spend.py +1 -1
  370. chia/types/eligible_coin_spends.py +9 -5
  371. chia/types/fee_rate.py +1 -1
  372. chia/types/generator_types.py +3 -3
  373. chia/types/internal_mempool_item.py +3 -2
  374. chia/types/mempool_item.py +10 -3
  375. chia/types/mempool_submission_status.py +2 -1
  376. chia/types/mojos.py +1 -1
  377. chia/types/peer_info.py +2 -1
  378. chia/types/transaction_queue_entry.py +2 -1
  379. chia/types/unfinished_header_block.py +4 -4
  380. chia/types/validation_state.py +2 -1
  381. chia/types/weight_proof.py +1 -9
  382. chia/util/augmented_chain.py +20 -9
  383. chia/util/block_cache.py +8 -4
  384. chia/util/condition_tools.py +2 -2
  385. chia/util/full_block_utils.py +3 -4
  386. chia/util/generator_tools.py +2 -2
  387. chia/util/initial-config.yaml +2 -11
  388. chia/util/network.py +2 -2
  389. chia/util/prev_transaction_block.py +2 -1
  390. chia/util/task_timing.py +1 -1
  391. chia/util/vdf_prover.py +3 -3
  392. chia/util/ws_message.py +1 -1
  393. chia/wallet/cat_wallet/cat_info.py +3 -2
  394. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -2
  395. chia/wallet/cat_wallet/cat_utils.py +6 -4
  396. chia/wallet/cat_wallet/cat_wallet.py +16 -18
  397. chia/wallet/cat_wallet/lineage_store.py +2 -1
  398. chia/wallet/coin_selection.py +5 -5
  399. chia/wallet/conditions.py +22 -16
  400. chia/wallet/db_wallet/db_wallet_puzzles.py +15 -15
  401. chia/wallet/derivation_record.py +2 -2
  402. chia/wallet/derive_keys.py +2 -2
  403. chia/wallet/did_wallet/did_info.py +3 -2
  404. chia/wallet/did_wallet/did_wallet.py +41 -19
  405. chia/wallet/did_wallet/did_wallet_puzzles.py +18 -12
  406. chia/wallet/driver_protocol.py +1 -1
  407. chia/wallet/lineage_proof.py +3 -2
  408. chia/wallet/nft_wallet/metadata_outer_puzzle.py +6 -7
  409. chia/wallet/nft_wallet/nft_info.py +5 -5
  410. chia/wallet/nft_wallet/nft_puzzle_utils.py +293 -0
  411. chia/wallet/nft_wallet/nft_puzzles.py +21 -298
  412. chia/wallet/nft_wallet/nft_wallet.py +47 -62
  413. chia/wallet/nft_wallet/ownership_outer_puzzle.py +4 -8
  414. chia/wallet/nft_wallet/singleton_outer_puzzle.py +3 -2
  415. chia/wallet/nft_wallet/transfer_program_puzzle.py +6 -10
  416. chia/wallet/nft_wallet/uncurry_nft.py +6 -8
  417. chia/wallet/notification_manager.py +5 -5
  418. chia/wallet/notification_store.py +3 -2
  419. chia/wallet/outer_puzzles.py +2 -1
  420. chia/wallet/puzzles/clawback/drivers.py +21 -8
  421. chia/wallet/puzzles/clawback/metadata.py +3 -2
  422. chia/wallet/puzzles/clawback/puzzle_decorator.py +5 -4
  423. chia/wallet/puzzles/deployed_puzzle_hashes.json +0 -10
  424. chia/wallet/puzzles/p2_conditions.py +3 -2
  425. chia/wallet/puzzles/p2_delegated_conditions.py +3 -2
  426. chia/wallet/puzzles/p2_delegated_puzzle.py +3 -2
  427. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -3
  428. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +3 -2
  429. chia/wallet/puzzles/p2_puzzle_hash.py +4 -3
  430. chia/wallet/puzzles/puzzle_utils.py +3 -2
  431. chia/wallet/puzzles/singleton_top_layer.py +26 -10
  432. chia/wallet/puzzles/singleton_top_layer_v1_1.py +21 -9
  433. chia/wallet/puzzles/tails.py +21 -129
  434. chia/wallet/signer_protocol.py +3 -2
  435. chia/wallet/singleton.py +12 -6
  436. chia/wallet/singleton_record.py +3 -2
  437. chia/wallet/trade_manager.py +31 -55
  438. chia/wallet/trade_record.py +3 -2
  439. chia/wallet/trading/offer.py +14 -13
  440. chia/wallet/trading/trade_store.py +3 -4
  441. chia/wallet/transaction_record.py +2 -2
  442. chia/wallet/util/blind_signer_tl.py +3 -2
  443. chia/wallet/util/compute_hints.py +3 -2
  444. chia/wallet/util/compute_memos.py +2 -2
  445. chia/wallet/util/curry_and_treehash.py +1 -2
  446. chia/wallet/util/merkle_tree.py +1 -1
  447. chia/wallet/util/merkle_utils.py +1 -1
  448. chia/wallet/util/new_peak_queue.py +2 -1
  449. chia/wallet/util/notifications.py +5 -4
  450. chia/wallet/util/peer_request_cache.py +3 -2
  451. chia/wallet/util/puzzle_compression.py +6 -4
  452. chia/wallet/util/puzzle_decorator.py +6 -4
  453. chia/wallet/util/query_filter.py +3 -2
  454. chia/wallet/util/tx_config.py +3 -3
  455. chia/wallet/util/wallet_sync_utils.py +2 -2
  456. chia/wallet/util/wallet_types.py +2 -3
  457. chia/wallet/vc_wallet/cr_cat_drivers.py +18 -22
  458. chia/wallet/vc_wallet/cr_cat_wallet.py +14 -10
  459. chia/wallet/vc_wallet/cr_outer_puzzle.py +2 -2
  460. chia/wallet/vc_wallet/vc_drivers.py +50 -68
  461. chia/wallet/vc_wallet/vc_store.py +2 -2
  462. chia/wallet/vc_wallet/vc_wallet.py +47 -15
  463. chia/wallet/wallet.py +51 -46
  464. chia/wallet/wallet_action_scope.py +4 -0
  465. chia/wallet/wallet_blockchain.py +12 -7
  466. chia/wallet/wallet_coin_record.py +3 -2
  467. chia/wallet/wallet_coin_store.py +3 -2
  468. chia/wallet/wallet_info.py +2 -1
  469. chia/wallet/wallet_interested_store.py +3 -2
  470. chia/wallet/wallet_nft_store.py +4 -4
  471. chia/wallet/wallet_node.py +3 -4
  472. chia/wallet/wallet_pool_store.py +3 -4
  473. chia/wallet/wallet_protocol.py +19 -5
  474. chia/wallet/wallet_puzzle_store.py +2 -2
  475. chia/wallet/wallet_retry_store.py +3 -6
  476. chia/wallet/wallet_singleton_store.py +2 -2
  477. chia/wallet/wallet_state_manager.py +20 -197
  478. chia/wallet/wallet_transaction_store.py +2 -2
  479. chia/wallet/wallet_user_store.py +2 -1
  480. chia/wallet/wallet_weight_proof_handler.py +3 -2
  481. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/METADATA +3 -2
  482. chia_blockchain-2.5.3rc1.dist-info/RECORD +891 -0
  483. mozilla-ca/cacert.pem +64 -33
  484. chia/_tests/clvm/test_condition_codes.py +0 -13
  485. chia/_tests/cmds/wallet/test_dao.py +0 -565
  486. chia/_tests/wallet/dao_wallet/__init__.py +0 -0
  487. chia/_tests/wallet/dao_wallet/config.py +0 -3
  488. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +0 -1330
  489. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +0 -3488
  490. chia/cmds/dao.py +0 -1064
  491. chia/cmds/dao_funcs.py +0 -598
  492. chia/consensus/puzzles/__init__.py +0 -0
  493. chia/consensus/puzzles/chialisp_deserialisation.clsp +0 -69
  494. chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +0 -1
  495. chia/consensus/puzzles/rom_bootstrap_generator.clsp +0 -37
  496. chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +0 -1
  497. chia/full_node/puzzles/__init__.py +0 -0
  498. chia/full_node/puzzles/block_program_zero.clsp +0 -14
  499. chia/full_node/puzzles/block_program_zero.clsp.hex +0 -1
  500. chia/full_node/puzzles/decompress_coin_spend_entry.clsp +0 -5
  501. chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +0 -1
  502. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +0 -7
  503. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +0 -1
  504. chia/full_node/puzzles/decompress_puzzle.clsp +0 -6
  505. chia/full_node/puzzles/decompress_puzzle.clsp.hex +0 -1
  506. chia/pools/puzzles/__init__.py +0 -0
  507. chia/pools/puzzles/pool_member_innerpuz.clsp +0 -70
  508. chia/pools/puzzles/pool_member_innerpuz.clsp.hex +0 -1
  509. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +0 -69
  510. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +0 -1
  511. chia/simulator/simulator_constants.py +0 -13
  512. chia/types/blockchain_format/foliage.py +0 -8
  513. chia/types/blockchain_format/pool_target.py +0 -5
  514. chia/types/blockchain_format/reward_chain_block.py +0 -6
  515. chia/types/blockchain_format/sized_bytes.py +0 -11
  516. chia/util/ints.py +0 -19
  517. chia/wallet/cat_wallet/dao_cat_info.py +0 -28
  518. chia/wallet/cat_wallet/dao_cat_wallet.py +0 -669
  519. chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
  520. chia/wallet/cat_wallet/puzzles/cat_truths.clib +0 -31
  521. chia/wallet/cat_wallet/puzzles/cat_v2.clsp +0 -397
  522. chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +0 -1
  523. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +0 -25
  524. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +0 -1
  525. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +0 -15
  526. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +0 -1
  527. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +0 -26
  528. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +0 -1
  529. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +0 -42
  530. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +0 -1
  531. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +0 -24
  532. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +0 -1
  533. chia/wallet/dao_wallet/__init__.py +0 -0
  534. chia/wallet/dao_wallet/dao_info.py +0 -61
  535. chia/wallet/dao_wallet/dao_utils.py +0 -811
  536. chia/wallet/dao_wallet/dao_wallet.py +0 -2119
  537. chia/wallet/did_wallet/puzzles/__init__.py +0 -0
  538. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +0 -135
  539. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +0 -1
  540. chia/wallet/payment.py +0 -33
  541. chia/wallet/puzzles/augmented_condition.clsp +0 -13
  542. chia/wallet/puzzles/augmented_condition.clsp.hex +0 -1
  543. chia/wallet/puzzles/condition_codes.clib +0 -77
  544. chia/wallet/puzzles/curry-and-treehash.clib +0 -102
  545. chia/wallet/puzzles/curry.clib +0 -135
  546. chia/wallet/puzzles/curry_by_index.clib +0 -16
  547. chia/wallet/puzzles/dao_cat_eve.clsp +0 -17
  548. chia/wallet/puzzles/dao_cat_eve.clsp.hex +0 -1
  549. chia/wallet/puzzles/dao_cat_launcher.clsp +0 -36
  550. chia/wallet/puzzles/dao_cat_launcher.clsp.hex +0 -1
  551. chia/wallet/puzzles/dao_finished_state.clsp +0 -35
  552. chia/wallet/puzzles/dao_finished_state.clsp.hex +0 -1
  553. chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +0 -1
  554. chia/wallet/puzzles/dao_lockup.clsp +0 -288
  555. chia/wallet/puzzles/dao_lockup.clsp.hex +0 -1
  556. chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +0 -1
  557. chia/wallet/puzzles/dao_proposal.clsp +0 -377
  558. chia/wallet/puzzles/dao_proposal.clsp.hex +0 -1
  559. chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +0 -1
  560. chia/wallet/puzzles/dao_proposal_timer.clsp +0 -78
  561. chia/wallet/puzzles/dao_proposal_timer.clsp.hex +0 -1
  562. chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +0 -1
  563. chia/wallet/puzzles/dao_proposal_validator.clsp +0 -87
  564. chia/wallet/puzzles/dao_proposal_validator.clsp.hex +0 -1
  565. chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +0 -1
  566. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +0 -240
  567. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +0 -1
  568. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +0 -1
  569. chia/wallet/puzzles/dao_treasury.clsp +0 -115
  570. chia/wallet/puzzles/dao_treasury.clsp.hex +0 -1
  571. chia/wallet/puzzles/dao_update_proposal.clsp +0 -44
  572. chia/wallet/puzzles/dao_update_proposal.clsp.hex +0 -1
  573. chia/wallet/puzzles/json.clib +0 -25
  574. chia/wallet/puzzles/merkle_utils.clib +0 -18
  575. chia/wallet/puzzles/notification.clsp +0 -7
  576. chia/wallet/puzzles/notification.clsp.hex +0 -1
  577. chia/wallet/puzzles/p2_1_of_n.clsp +0 -22
  578. chia/wallet/puzzles/p2_1_of_n.clsp.hex +0 -1
  579. chia/wallet/puzzles/p2_conditions.clsp +0 -3
  580. chia/wallet/puzzles/p2_conditions.clsp.hex +0 -1
  581. chia/wallet/puzzles/p2_delegated_conditions.clsp +0 -18
  582. chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +0 -1
  583. chia/wallet/puzzles/p2_delegated_puzzle.clsp +0 -19
  584. chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +0 -1
  585. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +0 -91
  586. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +0 -1
  587. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +0 -108
  588. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +0 -1
  589. chia/wallet/puzzles/p2_parent.clsp +0 -19
  590. chia/wallet/puzzles/p2_parent.clsp.hex +0 -1
  591. chia/wallet/puzzles/p2_puzzle_hash.clsp +0 -18
  592. chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +0 -1
  593. chia/wallet/puzzles/p2_singleton.clsp +0 -30
  594. chia/wallet/puzzles/p2_singleton.clsp.hex +0 -1
  595. chia/wallet/puzzles/p2_singleton_aggregator.clsp +0 -81
  596. chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +0 -1
  597. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +0 -50
  598. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +0 -1
  599. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +0 -47
  600. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +0 -1
  601. chia/wallet/puzzles/settlement_payments.clsp +0 -49
  602. chia/wallet/puzzles/settlement_payments.clsp.hex +0 -1
  603. chia/wallet/puzzles/sha256tree.clib +0 -11
  604. chia/wallet/puzzles/singleton_launcher.clsp +0 -16
  605. chia/wallet/puzzles/singleton_launcher.clsp.hex +0 -1
  606. chia/wallet/puzzles/singleton_top_layer.clsp +0 -177
  607. chia/wallet/puzzles/singleton_top_layer.clsp.hex +0 -1
  608. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +0 -107
  609. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +0 -1
  610. chia/wallet/puzzles/singleton_truths.clib +0 -21
  611. chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
  612. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +0 -3
  613. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +0 -1
  614. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +0 -304
  615. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +0 -1
  616. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +0 -45
  617. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +0 -1
  618. chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
  619. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +0 -30
  620. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +0 -1
  621. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +0 -75
  622. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +0 -1
  623. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +0 -32
  624. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +0 -1
  625. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +0 -80
  626. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +0 -1
  627. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +0 -163
  628. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +0 -1
  629. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +0 -16
  630. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +0 -1
  631. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +0 -74
  632. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +0 -1
  633. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +0 -23
  634. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +0 -1
  635. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +0 -64
  636. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +0 -1
  637. chia_blockchain-2.5.2rc2.dist-info/RECORD +0 -1042
  638. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/LICENSE +0 -0
  639. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/WHEEL +0 -0
  640. {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/entry_points.txt +0 -0
chia/cmds/dao.py DELETED
@@ -1,1064 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import asyncio
4
- from collections.abc import Sequence
5
- from typing import Optional
6
-
7
- import click
8
-
9
- from chia.cmds import options
10
- from chia.cmds.cmd_classes import ChiaCliContext
11
- from chia.cmds.cmds_util import CMDTXConfigLoader, tx_config_args, tx_out_cmd
12
- from chia.cmds.param_types import AmountParamType, Bytes32ParamType, CliAmount, TransactionFeeParamType, Uint64ParamType
13
- from chia.cmds.units import units
14
- from chia.types.blockchain_format.sized_bytes import bytes32
15
- from chia.util.ints import uint64
16
- from chia.wallet.conditions import ConditionValidTimes
17
- from chia.wallet.transaction_record import TransactionRecord
18
-
19
-
20
- @click.group("dao", short_help="Create, manage or show state of DAOs", no_args_is_help=True)
21
- @click.pass_context
22
- def dao_cmd(ctx: click.Context) -> None:
23
- pass
24
-
25
-
26
- # ----------------------------------------------------------------------------------------
27
- # ADD
28
-
29
-
30
- @dao_cmd.command("add", short_help="Create a wallet for an existing DAO", no_args_is_help=True)
31
- @click.option(
32
- "-wp",
33
- "--wallet-rpc-port",
34
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
35
- type=int,
36
- default=None,
37
- )
38
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
39
- @click.option("-n", "--name", help="Set the DAO wallet name", type=str)
40
- @click.option(
41
- "-t",
42
- "--treasury-id",
43
- help="The Treasury ID of the DAO you want to track",
44
- type=Bytes32ParamType(),
45
- required=True,
46
- )
47
- @click.option(
48
- "-a",
49
- "--filter-amount",
50
- help="The minimum number of votes a proposal needs before the wallet will recognise it",
51
- type=Uint64ParamType(),
52
- default=uint64(1),
53
- show_default=True,
54
- )
55
- @click.pass_context
56
- def dao_add_cmd(
57
- ctx: click.Context,
58
- wallet_rpc_port: Optional[int],
59
- fingerprint: int,
60
- treasury_id: bytes32,
61
- filter_amount: uint64,
62
- name: Optional[str],
63
- ) -> None:
64
- from chia.cmds.dao_funcs import add_dao_wallet
65
-
66
- asyncio.run(
67
- add_dao_wallet(
68
- ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, name, treasury_id, filter_amount
69
- )
70
- )
71
-
72
-
73
- # ----------------------------------------------------------------------------------------
74
- # CREATE
75
-
76
-
77
- @dao_cmd.command("create", short_help="Create a new DAO wallet and treasury", no_args_is_help=True)
78
- @click.option(
79
- "-wp",
80
- "--wallet-rpc-port",
81
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
82
- type=int,
83
- default=None,
84
- )
85
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
86
- @click.option("-n", "--name", help="Set the DAO wallet name", type=str)
87
- @click.option(
88
- "--proposal-timelock",
89
- help="The minimum number of blocks before a proposal can close",
90
- type=Uint64ParamType(),
91
- default="1000",
92
- show_default=True,
93
- )
94
- @click.option(
95
- "--soft-close",
96
- help="The number of blocks a proposal must remain unspent before closing",
97
- type=Uint64ParamType(),
98
- default="20",
99
- show_default=True,
100
- )
101
- @click.option(
102
- "--attendance-required",
103
- help="The minimum number of votes a proposal must receive to be accepted",
104
- type=Uint64ParamType(),
105
- required=True,
106
- )
107
- @click.option(
108
- "--pass-percentage",
109
- help="The percentage of 'yes' votes in basis points a proposal must receive to be accepted. 100% = 10000",
110
- type=Uint64ParamType(),
111
- default="5000",
112
- show_default=True,
113
- )
114
- @click.option(
115
- "--self-destruct",
116
- help="The number of blocks required before a proposal can be automatically removed",
117
- type=Uint64ParamType(),
118
- default="10000",
119
- show_default=True,
120
- )
121
- @click.option(
122
- "--oracle-delay",
123
- help="The number of blocks required between oracle spends of the treasury",
124
- type=Uint64ParamType(),
125
- default="50",
126
- show_default=True,
127
- )
128
- @click.option(
129
- "--proposal-minimum",
130
- help="The minimum amount (in xch) that a proposal must use to be created",
131
- type=AmountParamType(),
132
- default="1",
133
- show_default=True,
134
- )
135
- @click.option(
136
- "--filter-amount",
137
- help="The minimum number of votes a proposal needs before the wallet will recognise it",
138
- type=Uint64ParamType(),
139
- default="1",
140
- show_default=True,
141
- )
142
- @click.option(
143
- "--cat-amount",
144
- help="The number of DAO CATs (in mojos) to create when initializing the DAO",
145
- type=AmountParamType(),
146
- required=True,
147
- )
148
- @options.create_fee()
149
- @click.option(
150
- "--fee-for-cat",
151
- help="Set the fees for the CAT creation transaction, in XCH.",
152
- type=TransactionFeeParamType(),
153
- default="0",
154
- show_default=True,
155
- )
156
- @tx_config_args
157
- @tx_out_cmd()
158
- @click.pass_context
159
- def dao_create_cmd(
160
- ctx: click.Context,
161
- wallet_rpc_port: Optional[int],
162
- fingerprint: int,
163
- proposal_timelock: uint64,
164
- soft_close: uint64,
165
- attendance_required: uint64,
166
- pass_percentage: uint64,
167
- self_destruct: uint64,
168
- oracle_delay: uint64,
169
- proposal_minimum: CliAmount,
170
- filter_amount: uint64,
171
- cat_amount: CliAmount,
172
- name: Optional[str],
173
- fee: uint64,
174
- fee_for_cat: uint64,
175
- min_coin_amount: CliAmount,
176
- max_coin_amount: CliAmount,
177
- coins_to_exclude: Sequence[bytes32],
178
- amounts_to_exclude: Sequence[CliAmount],
179
- reuse: Optional[bool],
180
- push: bool,
181
- condition_valid_times: ConditionValidTimes,
182
- ) -> list[TransactionRecord]:
183
- from chia.cmds.dao_funcs import create_dao_wallet
184
-
185
- if self_destruct == proposal_timelock:
186
- raise ValueError("Self Destruct and Proposal Timelock cannot be the same value")
187
-
188
- print("Creating new DAO")
189
-
190
- return asyncio.run(
191
- create_dao_wallet(
192
- ChiaCliContext.set_default(ctx).root_path,
193
- wallet_rpc_port,
194
- fingerprint,
195
- fee,
196
- fee_for_cat,
197
- name,
198
- proposal_timelock,
199
- soft_close,
200
- attendance_required,
201
- pass_percentage,
202
- self_destruct,
203
- oracle_delay,
204
- proposal_minimum.convert_amount(units["chia"]),
205
- filter_amount,
206
- cat_amount,
207
- CMDTXConfigLoader(
208
- min_coin_amount=min_coin_amount,
209
- max_coin_amount=max_coin_amount,
210
- excluded_coin_ids=list(coins_to_exclude),
211
- excluded_coin_amounts=list(amounts_to_exclude),
212
- reuse_puzhash=reuse,
213
- ),
214
- push,
215
- condition_valid_times=condition_valid_times,
216
- )
217
- )
218
-
219
-
220
- # ----------------------------------------------------------------------------------------
221
- # TREASURY INFO
222
-
223
-
224
- @dao_cmd.command("get_id", short_help="Get the Treasury ID of a DAO", no_args_is_help=True)
225
- @click.option(
226
- "-wp",
227
- "--wallet-rpc-port",
228
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
229
- type=int,
230
- default=None,
231
- )
232
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
233
- @click.option("-i", "--wallet-id", help="DAO Wallet ID", type=int, required=True)
234
- @click.pass_context
235
- def dao_get_id_cmd(
236
- ctx: click.Context,
237
- wallet_rpc_port: Optional[int],
238
- fingerprint: int,
239
- wallet_id: int,
240
- ) -> None:
241
- from chia.cmds.dao_funcs import get_treasury_id
242
-
243
- asyncio.run(get_treasury_id(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id))
244
-
245
-
246
- @dao_cmd.command("add_funds", short_help="Send funds to a DAO treasury", no_args_is_help=True)
247
- @click.option(
248
- "-wp",
249
- "--wallet-rpc-port",
250
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
251
- type=int,
252
- default=None,
253
- )
254
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
255
- @click.option("-i", "--wallet-id", help="DAO Wallet ID which will receive the funds", type=int, required=True)
256
- @click.option(
257
- "-w",
258
- "--funding-wallet-id",
259
- help="ID of the wallet to send funds from",
260
- type=int,
261
- required=True,
262
- )
263
- @click.option(
264
- "-a",
265
- "--amount",
266
- help="The amount of funds to send, in XCH or CATs",
267
- type=AmountParamType(),
268
- required=True,
269
- )
270
- @options.create_fee()
271
- @tx_config_args
272
- @tx_out_cmd()
273
- @click.pass_context
274
- def dao_add_funds_cmd(
275
- ctx: click.Context,
276
- wallet_rpc_port: Optional[int],
277
- fingerprint: int,
278
- wallet_id: int,
279
- funding_wallet_id: int,
280
- amount: CliAmount,
281
- fee: uint64,
282
- min_coin_amount: CliAmount,
283
- max_coin_amount: CliAmount,
284
- coins_to_exclude: Sequence[bytes32],
285
- amounts_to_exclude: Sequence[CliAmount],
286
- reuse: Optional[bool],
287
- push: bool,
288
- condition_valid_times: ConditionValidTimes,
289
- ) -> list[TransactionRecord]:
290
- from chia.cmds.dao_funcs import add_funds_to_treasury
291
-
292
- return asyncio.run(
293
- add_funds_to_treasury(
294
- ChiaCliContext.set_default(ctx).root_path,
295
- wallet_rpc_port,
296
- fingerprint,
297
- wallet_id,
298
- funding_wallet_id,
299
- amount,
300
- fee,
301
- CMDTXConfigLoader(
302
- min_coin_amount=min_coin_amount,
303
- max_coin_amount=max_coin_amount,
304
- excluded_coin_ids=list(coins_to_exclude),
305
- excluded_coin_amounts=list(amounts_to_exclude),
306
- reuse_puzhash=reuse,
307
- ),
308
- push,
309
- condition_valid_times=condition_valid_times,
310
- )
311
- )
312
-
313
-
314
- @dao_cmd.command("balance", short_help="Get the asset balances for a DAO treasury", no_args_is_help=True)
315
- @click.option(
316
- "-wp",
317
- "--wallet-rpc-port",
318
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
319
- type=int,
320
- default=None,
321
- )
322
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
323
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
324
- @click.pass_context
325
- def dao_get_balance_cmd(
326
- ctx: click.Context,
327
- wallet_rpc_port: Optional[int],
328
- fingerprint: int,
329
- wallet_id: int,
330
- ) -> None:
331
- from chia.cmds.dao_funcs import get_treasury_balance
332
-
333
- asyncio.run(
334
- get_treasury_balance(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id)
335
- )
336
-
337
-
338
- @dao_cmd.command("rules", short_help="Get the current rules governing the DAO", no_args_is_help=True)
339
- @click.option(
340
- "-wp",
341
- "--wallet-rpc-port",
342
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
343
- type=int,
344
- default=None,
345
- )
346
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
347
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
348
- @click.pass_context
349
- def dao_rules_cmd(
350
- ctx: click.Context,
351
- wallet_rpc_port: Optional[int],
352
- fingerprint: int,
353
- wallet_id: int,
354
- ) -> None:
355
- from chia.cmds.dao_funcs import get_rules
356
-
357
- asyncio.run(get_rules(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id))
358
-
359
-
360
- # ----------------------------------------------------------------------------------------
361
- # LIST/SHOW PROPOSALS
362
-
363
-
364
- @dao_cmd.command("list_proposals", short_help="List proposals for the DAO", no_args_is_help=True)
365
- @click.option(
366
- "-wp",
367
- "--wallet-rpc-port",
368
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
369
- type=int,
370
- default=None,
371
- )
372
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
373
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
374
- @click.option(
375
- "-c",
376
- "--include-closed",
377
- help="Include previously closed proposals",
378
- is_flag=True,
379
- )
380
- @click.pass_context
381
- def dao_list_proposals_cmd(
382
- ctx: click.Context,
383
- wallet_rpc_port: Optional[int],
384
- fingerprint: int,
385
- wallet_id: int,
386
- include_closed: Optional[bool],
387
- ) -> None:
388
- from chia.cmds.dao_funcs import list_proposals
389
-
390
- if not include_closed:
391
- include_closed = False
392
-
393
- asyncio.run(
394
- list_proposals(
395
- ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id, include_closed
396
- )
397
- )
398
-
399
-
400
- @dao_cmd.command("show_proposal", short_help="Show the details of a specific proposal", no_args_is_help=True)
401
- @click.option(
402
- "-wp",
403
- "--wallet-rpc-port",
404
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
405
- type=int,
406
- default=None,
407
- )
408
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
409
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
410
- @click.option(
411
- "-p",
412
- "--proposal_id",
413
- help="The ID of the proposal to fetch",
414
- type=str,
415
- required=True,
416
- )
417
- @click.pass_context
418
- def dao_show_proposal_cmd(
419
- ctx: click.Context,
420
- wallet_rpc_port: Optional[int],
421
- fingerprint: int,
422
- wallet_id: int,
423
- proposal_id: str,
424
- ) -> None:
425
- from chia.cmds.dao_funcs import show_proposal
426
-
427
- asyncio.run(
428
- show_proposal(ChiaCliContext.set_default(ctx).root_path, wallet_rpc_port, fingerprint, wallet_id, proposal_id)
429
- )
430
-
431
-
432
- # ----------------------------------------------------------------------------------------
433
- # VOTE
434
-
435
-
436
- @dao_cmd.command("vote", short_help="Vote on a DAO proposal", no_args_is_help=True)
437
- @click.option(
438
- "-wp",
439
- "--wallet-rpc-port",
440
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
441
- type=int,
442
- default=None,
443
- )
444
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
445
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
446
- @click.option(
447
- "-p",
448
- "--proposal-id",
449
- help="The ID of the proposal you are voting on",
450
- type=str,
451
- required=True,
452
- )
453
- @click.option(
454
- "-a",
455
- "--vote-amount",
456
- help="The number of votes you want to cast",
457
- type=Uint64ParamType(),
458
- required=True,
459
- )
460
- @click.option(
461
- "-n",
462
- "--vote-no",
463
- help="Use this option to vote against a proposal. If not present then the vote is for the proposal",
464
- is_flag=True,
465
- )
466
- @options.create_fee()
467
- @tx_config_args
468
- @tx_out_cmd()
469
- @click.pass_context
470
- def dao_vote_cmd(
471
- ctx: click.Context,
472
- wallet_rpc_port: Optional[int],
473
- fingerprint: int,
474
- wallet_id: int,
475
- proposal_id: str,
476
- vote_amount: uint64,
477
- vote_no: Optional[bool],
478
- fee: uint64,
479
- min_coin_amount: CliAmount,
480
- max_coin_amount: CliAmount,
481
- coins_to_exclude: Sequence[bytes32],
482
- amounts_to_exclude: Sequence[CliAmount],
483
- reuse: Optional[bool],
484
- push: bool,
485
- condition_valid_times: ConditionValidTimes,
486
- ) -> list[TransactionRecord]:
487
- from chia.cmds.dao_funcs import vote_on_proposal
488
-
489
- is_yes_vote = False if vote_no else True
490
-
491
- return asyncio.run(
492
- vote_on_proposal(
493
- ChiaCliContext.set_default(ctx).root_path,
494
- wallet_rpc_port,
495
- fingerprint,
496
- wallet_id,
497
- proposal_id,
498
- vote_amount,
499
- is_yes_vote,
500
- fee,
501
- CMDTXConfigLoader(
502
- min_coin_amount=min_coin_amount,
503
- max_coin_amount=max_coin_amount,
504
- excluded_coin_ids=list(coins_to_exclude),
505
- excluded_coin_amounts=list(amounts_to_exclude),
506
- reuse_puzhash=reuse,
507
- ),
508
- push,
509
- condition_valid_times=condition_valid_times,
510
- )
511
- )
512
-
513
-
514
- # ----------------------------------------------------------------------------------------
515
- # CLOSE PROPOSALS
516
-
517
-
518
- @dao_cmd.command("close_proposal", short_help="Close a DAO proposal", no_args_is_help=True)
519
- @click.option(
520
- "-wp",
521
- "--wallet-rpc-port",
522
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
523
- type=int,
524
- default=None,
525
- )
526
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
527
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
528
- @click.option(
529
- "-p",
530
- "--proposal-id",
531
- help="The ID of the proposal you are voting on",
532
- type=str,
533
- required=True,
534
- )
535
- @click.option(
536
- "-d",
537
- "--self-destruct",
538
- help="If a proposal is broken, use self destruct to force it to close",
539
- is_flag=True,
540
- default=False,
541
- )
542
- @options.create_fee()
543
- @tx_config_args
544
- @tx_out_cmd()
545
- @click.pass_context
546
- def dao_close_proposal_cmd(
547
- ctx: click.Context,
548
- wallet_rpc_port: Optional[int],
549
- fingerprint: int,
550
- wallet_id: int,
551
- proposal_id: str,
552
- self_destruct: bool,
553
- fee: uint64,
554
- min_coin_amount: CliAmount,
555
- max_coin_amount: CliAmount,
556
- coins_to_exclude: Sequence[bytes32],
557
- amounts_to_exclude: Sequence[CliAmount],
558
- reuse: Optional[bool],
559
- push: bool,
560
- condition_valid_times: ConditionValidTimes,
561
- ) -> list[TransactionRecord]:
562
- from chia.cmds.dao_funcs import close_proposal
563
-
564
- return asyncio.run(
565
- close_proposal(
566
- ChiaCliContext.set_default(ctx).root_path,
567
- wallet_rpc_port,
568
- fingerprint,
569
- wallet_id,
570
- fee,
571
- proposal_id,
572
- self_destruct,
573
- CMDTXConfigLoader(
574
- min_coin_amount=min_coin_amount,
575
- max_coin_amount=max_coin_amount,
576
- excluded_coin_ids=list(coins_to_exclude),
577
- excluded_coin_amounts=list(amounts_to_exclude),
578
- reuse_puzhash=reuse,
579
- ),
580
- push,
581
- condition_valid_times=condition_valid_times,
582
- )
583
- )
584
-
585
-
586
- # ----------------------------------------------------------------------------------------
587
- # LOCKUP COINS
588
-
589
-
590
- @dao_cmd.command("lockup_coins", short_help="Lock DAO CATs for voting", no_args_is_help=True)
591
- @click.option(
592
- "-wp",
593
- "--wallet-rpc-port",
594
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
595
- type=int,
596
- default=None,
597
- )
598
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
599
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
600
- @click.option(
601
- "-a",
602
- "--amount",
603
- help="The amount of CATs (not mojos) to lock in voting mode",
604
- type=AmountParamType(),
605
- required=True,
606
- )
607
- @options.create_fee()
608
- @tx_config_args
609
- @tx_out_cmd()
610
- @click.pass_context
611
- def dao_lockup_coins_cmd(
612
- ctx: click.Context,
613
- wallet_rpc_port: Optional[int],
614
- fingerprint: int,
615
- wallet_id: int,
616
- amount: CliAmount,
617
- fee: uint64,
618
- min_coin_amount: CliAmount,
619
- max_coin_amount: CliAmount,
620
- coins_to_exclude: Sequence[bytes32],
621
- amounts_to_exclude: Sequence[CliAmount],
622
- reuse: Optional[bool],
623
- push: bool,
624
- condition_valid_times: ConditionValidTimes,
625
- ) -> list[TransactionRecord]:
626
- from chia.cmds.dao_funcs import lockup_coins
627
-
628
- return asyncio.run(
629
- lockup_coins(
630
- ChiaCliContext.set_default(ctx).root_path,
631
- wallet_rpc_port,
632
- fingerprint,
633
- wallet_id,
634
- amount,
635
- fee,
636
- CMDTXConfigLoader(
637
- min_coin_amount=min_coin_amount,
638
- max_coin_amount=max_coin_amount,
639
- excluded_coin_ids=list(coins_to_exclude),
640
- excluded_coin_amounts=list(amounts_to_exclude),
641
- reuse_puzhash=reuse,
642
- ),
643
- push,
644
- condition_valid_times=condition_valid_times,
645
- )
646
- )
647
-
648
-
649
- @dao_cmd.command("release_coins", short_help="Release closed proposals from DAO CATs", no_args_is_help=True)
650
- @click.option(
651
- "-wp",
652
- "--wallet-rpc-port",
653
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
654
- type=int,
655
- default=None,
656
- )
657
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
658
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
659
- @options.create_fee()
660
- @tx_config_args
661
- @tx_out_cmd()
662
- @click.pass_context
663
- def dao_release_coins_cmd(
664
- ctx: click.Context,
665
- wallet_rpc_port: Optional[int],
666
- fingerprint: int,
667
- wallet_id: int,
668
- fee: uint64,
669
- min_coin_amount: CliAmount,
670
- max_coin_amount: CliAmount,
671
- coins_to_exclude: Sequence[bytes32],
672
- amounts_to_exclude: Sequence[CliAmount],
673
- reuse: Optional[bool],
674
- push: bool,
675
- condition_valid_times: ConditionValidTimes,
676
- ) -> list[TransactionRecord]:
677
- from chia.cmds.dao_funcs import release_coins
678
-
679
- return asyncio.run(
680
- release_coins(
681
- ChiaCliContext.set_default(ctx).root_path,
682
- wallet_rpc_port,
683
- fingerprint,
684
- wallet_id,
685
- fee,
686
- CMDTXConfigLoader(
687
- min_coin_amount=min_coin_amount,
688
- max_coin_amount=max_coin_amount,
689
- excluded_coin_ids=list(coins_to_exclude),
690
- excluded_coin_amounts=list(amounts_to_exclude),
691
- reuse_puzhash=reuse,
692
- ),
693
- push,
694
- condition_valid_times=condition_valid_times,
695
- )
696
- )
697
-
698
-
699
- @dao_cmd.command("exit_lockup", short_help="Release DAO CATs from voting mode", no_args_is_help=True)
700
- @click.option(
701
- "-wp",
702
- "--wallet-rpc-port",
703
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
704
- type=int,
705
- default=None,
706
- )
707
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
708
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
709
- @options.create_fee()
710
- @tx_config_args
711
- @tx_out_cmd()
712
- @click.pass_context
713
- def dao_exit_lockup_cmd(
714
- ctx: click.Context,
715
- wallet_rpc_port: Optional[int],
716
- fingerprint: int,
717
- wallet_id: int,
718
- fee: uint64,
719
- min_coin_amount: CliAmount,
720
- max_coin_amount: CliAmount,
721
- coins_to_exclude: Sequence[bytes32],
722
- amounts_to_exclude: Sequence[CliAmount],
723
- reuse: Optional[bool],
724
- push: bool,
725
- condition_valid_times: ConditionValidTimes,
726
- ) -> list[TransactionRecord]:
727
- from chia.cmds.dao_funcs import exit_lockup
728
-
729
- return asyncio.run(
730
- exit_lockup(
731
- ChiaCliContext.set_default(ctx).root_path,
732
- wallet_rpc_port,
733
- fingerprint,
734
- wallet_id,
735
- fee,
736
- CMDTXConfigLoader(
737
- min_coin_amount=min_coin_amount,
738
- max_coin_amount=max_coin_amount,
739
- excluded_coin_ids=list(coins_to_exclude),
740
- excluded_coin_amounts=list(amounts_to_exclude),
741
- reuse_puzhash=reuse,
742
- ),
743
- push,
744
- condition_valid_times=condition_valid_times,
745
- )
746
- )
747
-
748
-
749
- # ----------------------------------------------------------------------------------------
750
- # CREATE PROPOSALS
751
-
752
-
753
- @dao_cmd.group("create_proposal", short_help="Create and add a proposal to a DAO", no_args_is_help=True)
754
- @click.pass_context
755
- def dao_proposal(ctx: click.Context) -> None:
756
- pass
757
-
758
-
759
- @dao_proposal.command("spend", short_help="Create a proposal to spend DAO funds", no_args_is_help=True)
760
- @click.option(
761
- "-wp",
762
- "--wallet-rpc-port",
763
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
764
- type=int,
765
- default=None,
766
- )
767
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
768
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
769
- @click.option(
770
- "-t",
771
- "--to-address",
772
- help="The address the proposal will send funds to",
773
- type=str,
774
- required=False,
775
- default=None,
776
- )
777
- @click.option(
778
- "-a",
779
- "--amount",
780
- help="The amount of funds the proposal will send (in mojos)",
781
- type=str,
782
- required=False,
783
- default=None,
784
- )
785
- @click.option(
786
- "-v",
787
- "--vote-amount",
788
- help="The number of votes to add",
789
- type=int,
790
- required=False,
791
- default=None,
792
- )
793
- @click.option(
794
- "--asset-id",
795
- help="The asset id of the funds the proposal will send. Leave blank for xch",
796
- type=str,
797
- required=False,
798
- default=None,
799
- )
800
- @click.option(
801
- "-j",
802
- "--from-json",
803
- help="Path to a json file containing a list of additions, for use in proposals with multiple spends",
804
- type=str,
805
- required=False,
806
- default=None,
807
- )
808
- @options.create_fee()
809
- @tx_config_args
810
- @tx_out_cmd()
811
- @click.pass_context
812
- def dao_create_spend_proposal_cmd(
813
- ctx: click.Context,
814
- wallet_rpc_port: Optional[int],
815
- fingerprint: int,
816
- wallet_id: int,
817
- fee: uint64,
818
- vote_amount: Optional[int],
819
- to_address: Optional[str],
820
- amount: Optional[str],
821
- asset_id: Optional[str],
822
- from_json: Optional[str],
823
- min_coin_amount: CliAmount,
824
- max_coin_amount: CliAmount,
825
- coins_to_exclude: Sequence[bytes32],
826
- amounts_to_exclude: Sequence[CliAmount],
827
- reuse: Optional[bool],
828
- push: bool,
829
- condition_valid_times: ConditionValidTimes,
830
- ) -> list[TransactionRecord]:
831
- from chia.cmds.dao_funcs import create_spend_proposal
832
-
833
- return asyncio.run(
834
- create_spend_proposal(
835
- ChiaCliContext.set_default(ctx).root_path,
836
- wallet_rpc_port,
837
- fingerprint,
838
- wallet_id,
839
- fee,
840
- vote_amount,
841
- to_address,
842
- amount,
843
- asset_id,
844
- from_json,
845
- CMDTXConfigLoader(
846
- min_coin_amount=min_coin_amount,
847
- max_coin_amount=max_coin_amount,
848
- excluded_coin_ids=list(coins_to_exclude),
849
- excluded_coin_amounts=list(amounts_to_exclude),
850
- reuse_puzhash=reuse,
851
- ),
852
- push,
853
- condition_valid_times=condition_valid_times,
854
- )
855
- )
856
-
857
-
858
- @dao_proposal.command("update", short_help="Create a proposal to change the DAO rules", no_args_is_help=True)
859
- @click.option(
860
- "-wp",
861
- "--wallet-rpc-port",
862
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
863
- type=int,
864
- default=None,
865
- )
866
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
867
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
868
- @click.option(
869
- "-v",
870
- "--vote-amount",
871
- help="The number of votes to add",
872
- type=Uint64ParamType(),
873
- required=False,
874
- default=None,
875
- )
876
- @click.option(
877
- "--proposal-timelock",
878
- help="The new minimum number of blocks before a proposal can close",
879
- type=Uint64ParamType(),
880
- default=None,
881
- required=False,
882
- )
883
- @click.option(
884
- "--soft-close",
885
- help="The number of blocks a proposal must remain unspent before closing",
886
- type=Uint64ParamType(),
887
- default=None,
888
- required=False,
889
- )
890
- @click.option(
891
- "--attendance-required",
892
- help="The minimum number of votes a proposal must receive to be accepted",
893
- type=Uint64ParamType(),
894
- default=None,
895
- required=False,
896
- )
897
- @click.option(
898
- "--pass-percentage",
899
- help="The percentage of 'yes' votes in basis points a proposal must receive to be accepted. 100% = 10000",
900
- type=Uint64ParamType(),
901
- default=None,
902
- required=False,
903
- )
904
- @click.option(
905
- "--self-destruct",
906
- help="The number of blocks required before a proposal can be automatically removed",
907
- type=Uint64ParamType(),
908
- default=None,
909
- required=False,
910
- )
911
- @click.option(
912
- "--oracle-delay",
913
- help="The number of blocks required between oracle spends of the treasury",
914
- type=Uint64ParamType(),
915
- default=None,
916
- required=False,
917
- )
918
- @options.create_fee()
919
- @tx_config_args
920
- @tx_out_cmd()
921
- @click.pass_context
922
- def dao_create_update_proposal_cmd(
923
- ctx: click.Context,
924
- wallet_rpc_port: Optional[int],
925
- fingerprint: int,
926
- wallet_id: int,
927
- fee: uint64,
928
- vote_amount: Optional[uint64],
929
- proposal_timelock: Optional[uint64],
930
- soft_close: Optional[uint64],
931
- attendance_required: Optional[uint64],
932
- pass_percentage: Optional[uint64],
933
- self_destruct: Optional[uint64],
934
- oracle_delay: Optional[uint64],
935
- min_coin_amount: CliAmount,
936
- max_coin_amount: CliAmount,
937
- coins_to_exclude: Sequence[bytes32],
938
- amounts_to_exclude: Sequence[CliAmount],
939
- reuse: Optional[bool],
940
- push: bool,
941
- condition_valid_times: ConditionValidTimes,
942
- ) -> list[TransactionRecord]:
943
- from chia.cmds.dao_funcs import create_update_proposal
944
-
945
- return asyncio.run(
946
- create_update_proposal(
947
- ChiaCliContext.set_default(ctx).root_path,
948
- wallet_rpc_port,
949
- fingerprint,
950
- wallet_id,
951
- fee,
952
- vote_amount,
953
- proposal_timelock,
954
- soft_close,
955
- attendance_required,
956
- pass_percentage,
957
- self_destruct,
958
- oracle_delay,
959
- CMDTXConfigLoader(
960
- min_coin_amount=min_coin_amount,
961
- max_coin_amount=max_coin_amount,
962
- excluded_coin_ids=list(coins_to_exclude),
963
- excluded_coin_amounts=list(amounts_to_exclude),
964
- reuse_puzhash=reuse,
965
- ),
966
- push,
967
- condition_valid_times=condition_valid_times,
968
- )
969
- )
970
-
971
-
972
- @dao_proposal.command("mint", short_help="Create a proposal to mint new DAO CATs", no_args_is_help=True)
973
- @click.option(
974
- "-wp",
975
- "--wallet-rpc-port",
976
- help="Set the port where the Wallet is hosting the RPC interface. See the rpc_port under wallet in config.yaml",
977
- type=int,
978
- default=None,
979
- )
980
- @click.option("-f", "--fingerprint", help="Set the fingerprint to specify which key to use", type=int)
981
- @click.option("-i", "--wallet-id", help="Id of the wallet to use", type=int, required=True)
982
- @click.option(
983
- "-a",
984
- "--amount",
985
- help="The amount of new cats the proposal will mint (in mojos)",
986
- type=Uint64ParamType(),
987
- required=True,
988
- )
989
- @click.option(
990
- "-t",
991
- "--to-address",
992
- help="The address new cats will be minted to",
993
- type=str,
994
- required=True,
995
- default=None,
996
- )
997
- @click.option(
998
- "-v",
999
- "--vote-amount",
1000
- help="The number of votes to add",
1001
- type=int,
1002
- required=False,
1003
- default=None,
1004
- )
1005
- @options.create_fee()
1006
- @tx_config_args
1007
- @tx_out_cmd()
1008
- @click.pass_context
1009
- def dao_create_mint_proposal_cmd(
1010
- ctx: click.Context,
1011
- wallet_rpc_port: Optional[int],
1012
- fingerprint: int,
1013
- wallet_id: int,
1014
- fee: uint64,
1015
- amount: uint64,
1016
- to_address: str,
1017
- vote_amount: Optional[int],
1018
- min_coin_amount: CliAmount,
1019
- max_coin_amount: CliAmount,
1020
- coins_to_exclude: Sequence[bytes32],
1021
- amounts_to_exclude: Sequence[CliAmount],
1022
- reuse: Optional[bool],
1023
- push: bool,
1024
- condition_valid_times: ConditionValidTimes,
1025
- ) -> list[TransactionRecord]:
1026
- from chia.cmds.dao_funcs import create_mint_proposal
1027
-
1028
- return asyncio.run(
1029
- create_mint_proposal(
1030
- ChiaCliContext.set_default(ctx).root_path,
1031
- wallet_rpc_port,
1032
- fingerprint,
1033
- wallet_id,
1034
- fee,
1035
- amount,
1036
- to_address,
1037
- vote_amount,
1038
- CMDTXConfigLoader(
1039
- min_coin_amount=min_coin_amount,
1040
- max_coin_amount=max_coin_amount,
1041
- excluded_coin_ids=list(coins_to_exclude),
1042
- excluded_coin_amounts=list(amounts_to_exclude),
1043
- reuse_puzhash=reuse,
1044
- ),
1045
- push,
1046
- condition_valid_times=condition_valid_times,
1047
- )
1048
- )
1049
-
1050
-
1051
- # ----------------------------------------------------------------------------------------
1052
-
1053
- dao_cmd.add_command(dao_add_cmd)
1054
- dao_cmd.add_command(dao_create_cmd)
1055
- dao_cmd.add_command(dao_add_funds_cmd)
1056
- dao_cmd.add_command(dao_get_balance_cmd)
1057
- dao_cmd.add_command(dao_list_proposals_cmd)
1058
- dao_cmd.add_command(dao_show_proposal_cmd)
1059
- dao_cmd.add_command(dao_vote_cmd)
1060
- dao_cmd.add_command(dao_close_proposal_cmd)
1061
- dao_cmd.add_command(dao_lockup_coins_cmd)
1062
- dao_cmd.add_command(dao_exit_lockup_cmd)
1063
- dao_cmd.add_command(dao_release_coins_cmd)
1064
- dao_cmd.add_command(dao_proposal)