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.
- chia/__init__.py +7 -0
- chia/_tests/blockchain/blockchain_test_utils.py +1 -1
- chia/_tests/blockchain/test_augmented_chain.py +54 -5
- chia/_tests/blockchain/test_blockchain.py +5 -12
- chia/_tests/blockchain/test_blockchain_transactions.py +3 -5
- chia/_tests/blockchain/test_get_block_generator.py +2 -2
- chia/_tests/blockchain/test_lookup_fork_chain.py +2 -2
- chia/_tests/clvm/benchmark_costs.py +2 -1
- chia/_tests/clvm/coin_store.py +4 -3
- chia/_tests/clvm/test_chialisp_deserialization.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +1 -1
- chia/_tests/clvm/test_puzzle_compression.py +2 -2
- chia/_tests/clvm/test_puzzles.py +2 -2
- chia/_tests/clvm/test_singletons.py +2 -2
- chia/_tests/clvm/test_spend_sim.py +1 -1
- chia/_tests/cmds/cmd_test_utils.py +2 -2
- chia/_tests/cmds/test_click_types.py +2 -2
- chia/_tests/cmds/test_cmd_framework.py +6 -6
- chia/_tests/cmds/test_show.py +4 -3
- chia/_tests/cmds/test_tx_config_args.py +1 -1
- chia/_tests/cmds/testing_classes.py +2 -2
- chia/_tests/cmds/wallet/test_consts.py +2 -2
- chia/_tests/cmds/wallet/test_did.py +2 -2
- chia/_tests/cmds/wallet/test_nft.py +2 -2
- chia/_tests/cmds/wallet/test_notifications.py +3 -2
- chia/_tests/cmds/wallet/test_vcs.py +2 -2
- chia/_tests/cmds/wallet/test_wallet.py +4 -8
- chia/_tests/conftest.py +4 -3
- chia/_tests/connection_utils.py +2 -2
- chia/_tests/core/cmds/test_keys.py +1 -2
- chia/_tests/core/cmds/test_wallet.py +2 -2
- chia/_tests/core/consensus/test_block_creation.py +2 -2
- chia/_tests/core/consensus/test_pot_iterations.py +1 -1
- chia/_tests/core/custom_types/test_coin.py +2 -2
- chia/_tests/core/custom_types/test_proof_of_space.py +2 -2
- chia/_tests/core/custom_types/test_spend_bundle.py +2 -2
- chia/_tests/core/data_layer/conftest.py +1 -1
- chia/_tests/core/data_layer/test_data_layer.py +1 -1
- chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
- chia/_tests/core/data_layer/test_data_rpc.py +2 -2
- chia/_tests/core/data_layer/test_data_store.py +1 -1
- chia/_tests/core/data_layer/test_data_store_schema.py +1 -1
- chia/_tests/core/data_layer/util.py +2 -1
- chia/_tests/core/farmer/test_farmer_api.py +1 -1
- chia/_tests/core/full_node/full_sync/test_full_sync.py +1 -7
- chia/_tests/core/full_node/ram_db.py +2 -1
- chia/_tests/core/full_node/stores/test_block_store.py +2 -2
- chia/_tests/core/full_node/stores/test_coin_store.py +2 -2
- chia/_tests/core/full_node/stores/test_full_node_store.py +3 -3
- chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
- chia/_tests/core/full_node/stores/test_sync_store.py +1 -1
- chia/_tests/core/full_node/test_address_manager.py +1 -1
- chia/_tests/core/full_node/test_block_height_map.py +2 -2
- chia/_tests/core/full_node/test_conditions.py +1 -1
- chia/_tests/core/full_node/test_full_node.py +346 -164
- chia/_tests/core/full_node/test_generator_tools.py +3 -2
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -15
- chia/_tests/core/full_node/test_subscriptions.py +1 -1
- chia/_tests/core/full_node/test_transactions.py +186 -185
- chia/_tests/core/full_node/test_tx_processing_queue.py +1 -1
- chia/_tests/core/make_block_generator.py +2 -2
- chia/_tests/core/mempool/test_mempool.py +165 -22
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +1 -1
- chia/_tests/core/mempool/test_mempool_manager.py +476 -66
- chia/_tests/core/mempool/test_mempool_performance.py +2 -2
- chia/_tests/core/mempool/test_singleton_fast_forward.py +19 -25
- chia/_tests/core/node_height.py +2 -1
- chia/_tests/core/server/test_capabilities.py +1 -1
- chia/_tests/core/server/test_dos.py +36 -28
- chia/_tests/core/server/test_loop.py +3 -3
- chia/_tests/core/server/test_rate_limits.py +1 -1
- chia/_tests/core/server/test_server.py +2 -2
- chia/_tests/core/services/test_services.py +1 -1
- chia/_tests/core/ssl/test_ssl.py +1 -1
- chia/_tests/core/test_coins.py +2 -1
- chia/_tests/core/test_cost_calculation.py +2 -2
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +2 -2
- chia/_tests/core/test_db_validation.py +26 -13
- chia/_tests/core/test_farmer_harvester_rpc.py +2 -2
- chia/_tests/core/test_full_node_rpc.py +2 -2
- chia/_tests/core/test_merkle_set.py +2 -2
- chia/_tests/core/test_program.py +2 -2
- chia/_tests/core/test_rpc_util.py +1 -1
- chia/_tests/core/test_seeder.py +1 -1
- chia/_tests/core/util/test_block_cache.py +3 -3
- chia/_tests/core/util/test_jsonify.py +3 -2
- chia/_tests/core/util/test_keychain.py +3 -3
- chia/_tests/core/util/test_streamable.py +3 -4
- chia/_tests/environments/wallet.py +3 -2
- chia/_tests/farmer_harvester/test_farmer.py +3 -4
- chia/_tests/farmer_harvester/test_farmer_harvester.py +2 -2
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +2 -2
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +3 -4
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -1
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +2 -2
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +3 -4
- chia/_tests/generator/test_compression.py +20 -10
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -2
- chia/_tests/plot_sync/test_plot_sync.py +2 -2
- chia/_tests/plot_sync/test_receiver.py +2 -2
- chia/_tests/plot_sync/test_sender.py +2 -2
- chia/_tests/plot_sync/test_sync_simulated.py +2 -2
- chia/_tests/plot_sync/util.py +3 -2
- chia/_tests/plotting/test_plot_manager.py +1 -1
- chia/_tests/pools/test_pool_cli_parsing.py +3 -2
- chia/_tests/pools/test_pool_cmdline.py +2 -2
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +3 -3
- chia/_tests/pools/test_pool_rpc.py +4 -5
- chia/_tests/pools/test_pool_wallet.py +1 -1
- chia/_tests/pools/test_wallet_pool_store.py +2 -2
- chia/_tests/rpc/test_rpc_client.py +1 -1
- chia/_tests/rpc/test_rpc_server.py +1 -1
- chia/_tests/simulation/test_simulation.py +36 -8
- chia/_tests/simulation/test_simulator.py +5 -5
- chia/_tests/simulation/test_start_simulator.py +2 -2
- chia/_tests/timelord/test_new_peak.py +2 -2
- chia/_tests/tools/test_run_block.py +3 -2
- chia/_tests/util/benchmark_cost.py +2 -2
- chia/_tests/util/benchmarks.py +17 -6
- chia/_tests/util/blockchain.py +2 -1
- chia/_tests/util/blockchain_mock.py +9 -5
- chia/_tests/util/build_network_protocol_files.py +2 -1
- chia/_tests/util/constants.py +2 -1
- chia/_tests/util/full_sync.py +6 -3
- chia/_tests/util/gen_ssl_certs.py +2 -2
- chia/_tests/util/generator_tools_testing.py +4 -3
- chia/_tests/util/get_name_puzzle_conditions.py +2 -2
- chia/_tests/util/misc.py +16 -2
- chia/_tests/util/network_protocol_data.py +17 -7
- chia/_tests/util/run_block.py +6 -8
- chia/_tests/util/setup_nodes.py +4 -3
- chia/_tests/util/spend_sim.py +9 -5
- chia/_tests/util/test_condition_tools.py +2 -2
- chia/_tests/util/test_config.py +2 -1
- chia/_tests/util/test_errors.py +2 -1
- chia/_tests/util/test_full_block_utils.py +17 -7
- chia/_tests/util/test_misc.py +1 -1
- chia/_tests/util/test_network_protocol_test.py +24 -24
- chia/_tests/util/test_replace_str_to_bytes.py +2 -2
- chia/_tests/util/test_trusted_peer.py +1 -1
- chia/_tests/util/time_out_assert.py +20 -7
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -2
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +5 -6
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +17 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +2 -2
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -2
- chia/_tests/wallet/clawback/test_clawback_metadata.py +2 -2
- chia/_tests/wallet/conftest.py +3 -3
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +3 -5
- chia/_tests/wallet/db_wallet/test_dl_offers.py +2 -2
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +433 -384
- chia/_tests/wallet/did_wallet/test_did.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +2 -2
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +2 -2
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +3 -4
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +1293 -703
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +28 -30
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2 -2
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +2 -2
- chia/_tests/wallet/rpc/config.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +2 -2
- chia/_tests/wallet/rpc/test_wallet_rpc.py +20 -77
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +9 -7
- chia/_tests/wallet/sync/test_wallet_sync.py +79 -31
- chia/_tests/wallet/test_clvm_streamable.py +2 -2
- chia/_tests/wallet/test_coin_management.py +7 -7
- chia/_tests/wallet/test_coin_selection.py +20 -2
- chia/_tests/wallet/test_conditions.py +2 -2
- chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
- chia/_tests/wallet/test_new_wallet_protocol.py +2 -2
- chia/_tests/wallet/test_nft_store.py +2 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_puzzle_store.py +2 -2
- chia/_tests/wallet/test_sign_coin_spends.py +2 -2
- chia/_tests/wallet/test_signer_protocol.py +3 -3
- chia/_tests/wallet/test_singleton.py +3 -11
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +12 -13
- chia/_tests/wallet/test_singleton_store.py +2 -4
- chia/_tests/wallet/test_transaction_store.py +2 -2
- chia/_tests/wallet/test_util.py +2 -2
- chia/_tests/wallet/test_wallet.py +53 -49
- chia/_tests/wallet/test_wallet_action_scope.py +24 -6
- chia/_tests/wallet/test_wallet_blockchain.py +1 -1
- chia/_tests/wallet/test_wallet_coin_store.py +2 -2
- chia/_tests/wallet/test_wallet_interested_store.py +2 -2
- chia/_tests/wallet/test_wallet_node.py +3 -3
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +8 -8
- chia/_tests/wallet/test_wallet_test_framework.py +1 -1
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +2 -2
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -2
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +15 -15
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +5 -3
- chia/_tests/wallet/wallet_block_tools.py +15 -7
- chia/_tests/weight_proof/test_weight_proof.py +3 -3
- chia/cmds/chia.py +0 -2
- chia/cmds/cmd_classes.py +3 -3
- chia/cmds/cmd_helpers.py +4 -4
- chia/cmds/cmds_util.py +2 -2
- chia/cmds/coin_funcs.py +3 -2
- chia/cmds/coins.py +1 -1
- chia/cmds/data.py +2 -2
- chia/cmds/data_funcs.py +3 -2
- chia/cmds/db_upgrade_func.py +2 -2
- chia/cmds/db_validate_func.py +15 -8
- chia/cmds/farm.py +2 -4
- chia/cmds/keys.py +0 -2
- chia/cmds/keys_funcs.py +1 -1
- chia/cmds/netspace_funcs.py +2 -1
- chia/cmds/param_types.py +2 -2
- chia/cmds/plotnft.py +2 -2
- chia/cmds/plotnft_funcs.py +2 -2
- chia/cmds/rpc.py +1 -1
- chia/cmds/show.py +1 -2
- chia/cmds/show_funcs.py +6 -3
- chia/cmds/signer.py +1 -2
- chia/cmds/sim.py +1 -2
- chia/cmds/sim_funcs.py +2 -2
- chia/cmds/wallet.py +2 -2
- chia/cmds/wallet_funcs.py +4 -11
- chia/consensus/block_body_validation.py +3 -4
- chia/consensus/block_creation.py +10 -6
- chia/consensus/block_header_validation.py +3 -4
- chia/consensus/block_record.py +2 -3
- chia/consensus/block_rewards.py +1 -1
- chia/consensus/blockchain.py +20 -17
- chia/consensus/blockchain_interface.py +5 -4
- chia/consensus/coinbase.py +2 -2
- chia/consensus/constants.py +1 -1
- chia/consensus/cost_calculator.py +2 -1
- chia/consensus/default_constants.py +4 -3
- chia/consensus/deficit.py +3 -2
- chia/consensus/difficulty_adjustment.py +8 -9
- chia/consensus/find_fork_point.py +4 -3
- chia/consensus/full_block_to_block_record.py +4 -3
- chia/consensus/get_block_challenge.py +4 -3
- chia/consensus/get_block_generator.py +3 -2
- chia/consensus/make_sub_epoch_summary.py +3 -2
- chia/consensus/multiprocess_validation.py +9 -4
- chia/consensus/pos_quality.py +1 -1
- chia/consensus/pot_iterations.py +4 -3
- chia/consensus/vdf_info_computation.py +4 -3
- chia/daemon/client.py +1 -1
- chia/daemon/keychain_server.py +1 -1
- chia/daemon/server.py +1 -1
- chia/daemon/windows_signal.py +1 -1
- chia/data_layer/data_layer.py +4 -3
- chia/data_layer/data_layer_errors.py +1 -1
- chia/data_layer/data_layer_util.py +2 -2
- chia/data_layer/data_layer_wallet.py +47 -69
- chia/data_layer/data_store.py +1 -1
- chia/data_layer/dl_wallet_store.py +5 -6
- chia/data_layer/download_data.py +1 -1
- chia/data_layer/s3_plugin_service.py +4 -4
- chia/data_layer/singleton_record.py +23 -0
- chia/data_layer/util/benchmark.py +2 -1
- chia/farmer/farmer.py +4 -6
- chia/farmer/farmer_api.py +4 -6
- chia/full_node/bitcoin_fee_estimator.py +2 -1
- chia/full_node/block_height_map.py +2 -2
- chia/full_node/block_store.py +8 -9
- chia/{util → full_node}/check_fork_next_block.py +2 -1
- chia/full_node/coin_store.py +10 -10
- chia/full_node/fee_estimate.py +2 -1
- chia/full_node/fee_estimation.py +2 -1
- chia/full_node/fee_estimator.py +2 -1
- chia/full_node/fee_estimator_interface.py +1 -1
- chia/full_node/fee_history.py +2 -1
- chia/full_node/fee_tracker.py +2 -1
- chia/full_node/full_node.py +15 -13
- chia/full_node/full_node_api.py +12 -32
- chia/full_node/full_node_store.py +4 -3
- chia/full_node/hint_management.py +2 -1
- chia/full_node/hint_store.py +3 -3
- chia/full_node/mempool.py +79 -12
- chia/full_node/mempool_check_conditions.py +6 -7
- chia/full_node/mempool_manager.py +168 -21
- chia/full_node/pending_tx_cache.py +2 -2
- chia/full_node/subscriptions.py +2 -2
- chia/full_node/sync_store.py +2 -3
- chia/full_node/tx_processing_queue.py +2 -1
- chia/full_node/weight_proof.py +5 -8
- chia/harvester/harvester.py +5 -3
- chia/harvester/harvester_api.py +2 -2
- chia/introducer/introducer.py +30 -2
- chia/introducer/introducer_api.py +9 -1
- chia/legacy/keyring.py +1 -2
- chia/plot_sync/exceptions.py +2 -1
- chia/plot_sync/receiver.py +2 -2
- chia/plot_sync/sender.py +1 -1
- chia/plotting/cache.py +2 -2
- chia/plotting/check_plots.py +4 -2
- chia/plotting/create_plots.py +1 -1
- chia/plotting/manager.py +3 -3
- chia/plotting/util.py +2 -2
- chia/pools/pool_config.py +1 -1
- chia/pools/pool_puzzles.py +23 -17
- chia/pools/pool_wallet.py +22 -9
- chia/pools/pool_wallet_info.py +2 -2
- chia/protocols/farmer_protocol.py +3 -6
- chia/protocols/full_node_protocol.py +3 -2
- chia/protocols/harvester_protocol.py +3 -4
- chia/protocols/pool_protocol.py +2 -2
- chia/protocols/shared_protocol.py +2 -1
- chia/protocols/timelord_protocol.py +4 -4
- chia/protocols/wallet_protocol.py +2 -2
- chia/rpc/data_layer_rpc_api.py +3 -4
- chia/rpc/data_layer_rpc_client.py +3 -2
- chia/rpc/farmer_rpc_api.py +2 -2
- chia/rpc/farmer_rpc_client.py +2 -1
- chia/rpc/full_node_rpc_api.py +3 -2
- chia/rpc/full_node_rpc_client.py +3 -2
- chia/rpc/harvester_rpc_api.py +2 -1
- chia/rpc/rpc_client.py +2 -2
- chia/rpc/rpc_server.py +1 -1
- chia/rpc/wallet_request_types.py +2 -62
- chia/rpc/wallet_rpc_api.py +98 -628
- chia/rpc/wallet_rpc_client.py +5 -253
- chia/seeder/crawl_store.py +1 -1
- chia/seeder/crawler.py +2 -2
- chia/seeder/peer_record.py +2 -1
- chia/seeder/start_crawler.py +3 -1
- chia/server/address_manager.py +2 -1
- chia/server/address_manager_store.py +1 -1
- chia/server/capabilities.py +2 -1
- chia/server/introducer_peers.py +2 -1
- chia/server/node_discovery.py +1 -1
- chia/server/outbound_message.py +2 -1
- chia/server/server.py +2 -2
- chia/server/start_data_layer.py +2 -1
- chia/server/start_farmer.py +3 -1
- chia/server/start_full_node.py +4 -2
- chia/server/start_harvester.py +3 -1
- chia/server/start_introducer.py +12 -1
- chia/server/start_service.py +2 -1
- chia/server/start_timelord.py +3 -1
- chia/server/start_wallet.py +3 -1
- chia/server/upnp.py +1 -2
- chia/server/ws_connection.py +3 -4
- chia/simulator/add_blocks_in_batches.py +5 -3
- chia/simulator/block_tools.py +16 -12
- chia/simulator/full_node_simulator.py +9 -14
- chia/simulator/setup_services.py +5 -3
- chia/simulator/simulator_full_node_rpc_api.py +3 -2
- chia/simulator/simulator_full_node_rpc_client.py +3 -2
- chia/simulator/simulator_protocol.py +3 -2
- chia/simulator/simulator_test_tools.py +2 -2
- chia/simulator/start_simulator.py +3 -2
- chia/simulator/wallet_tools.py +3 -4
- chia/timelord/iters_from_block.py +4 -4
- chia/timelord/timelord.py +7 -12
- chia/timelord/timelord_api.py +3 -3
- chia/timelord/timelord_state.py +4 -3
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +2 -2
- chia/types/blockchain_format/program.py +1 -1
- chia/types/blockchain_format/proof_of_space.py +3 -4
- chia/types/blockchain_format/tree_hash.py +1 -1
- chia/types/blockchain_format/vdf.py +3 -4
- chia/types/clvm_cost.py +1 -1
- chia/types/coin_record.py +4 -3
- chia/types/coin_spend.py +1 -1
- chia/types/eligible_coin_spends.py +9 -5
- chia/types/fee_rate.py +1 -1
- chia/types/generator_types.py +3 -3
- chia/types/internal_mempool_item.py +3 -2
- chia/types/mempool_item.py +10 -3
- chia/types/mempool_submission_status.py +2 -1
- chia/types/mojos.py +1 -1
- chia/types/peer_info.py +2 -1
- chia/types/transaction_queue_entry.py +2 -1
- chia/types/unfinished_header_block.py +4 -4
- chia/types/validation_state.py +2 -1
- chia/types/weight_proof.py +1 -9
- chia/util/augmented_chain.py +20 -9
- chia/util/block_cache.py +8 -4
- chia/util/condition_tools.py +2 -2
- chia/util/full_block_utils.py +3 -4
- chia/util/generator_tools.py +2 -2
- chia/util/initial-config.yaml +2 -11
- chia/util/network.py +2 -2
- chia/util/prev_transaction_block.py +2 -1
- chia/util/task_timing.py +1 -1
- chia/util/vdf_prover.py +3 -3
- chia/util/ws_message.py +1 -1
- chia/wallet/cat_wallet/cat_info.py +3 -2
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -2
- chia/wallet/cat_wallet/cat_utils.py +6 -4
- chia/wallet/cat_wallet/cat_wallet.py +16 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -1
- chia/wallet/coin_selection.py +5 -5
- chia/wallet/conditions.py +22 -16
- chia/wallet/db_wallet/db_wallet_puzzles.py +15 -15
- chia/wallet/derivation_record.py +2 -2
- chia/wallet/derive_keys.py +2 -2
- chia/wallet/did_wallet/did_info.py +3 -2
- chia/wallet/did_wallet/did_wallet.py +41 -19
- chia/wallet/did_wallet/did_wallet_puzzles.py +18 -12
- chia/wallet/driver_protocol.py +1 -1
- chia/wallet/lineage_proof.py +3 -2
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +6 -7
- chia/wallet/nft_wallet/nft_info.py +5 -5
- chia/wallet/nft_wallet/nft_puzzle_utils.py +293 -0
- chia/wallet/nft_wallet/nft_puzzles.py +21 -298
- chia/wallet/nft_wallet/nft_wallet.py +47 -62
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +4 -8
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +3 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +6 -10
- chia/wallet/nft_wallet/uncurry_nft.py +6 -8
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +3 -2
- chia/wallet/outer_puzzles.py +2 -1
- chia/wallet/puzzles/clawback/drivers.py +21 -8
- chia/wallet/puzzles/clawback/metadata.py +3 -2
- chia/wallet/puzzles/clawback/puzzle_decorator.py +5 -4
- chia/wallet/puzzles/deployed_puzzle_hashes.json +0 -10
- chia/wallet/puzzles/p2_conditions.py +3 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +3 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +3 -2
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -3
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +3 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +4 -3
- chia/wallet/puzzles/puzzle_utils.py +3 -2
- chia/wallet/puzzles/singleton_top_layer.py +26 -10
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +21 -9
- chia/wallet/puzzles/tails.py +21 -129
- chia/wallet/signer_protocol.py +3 -2
- chia/wallet/singleton.py +12 -6
- chia/wallet/singleton_record.py +3 -2
- chia/wallet/trade_manager.py +31 -55
- chia/wallet/trade_record.py +3 -2
- chia/wallet/trading/offer.py +14 -13
- chia/wallet/trading/trade_store.py +3 -4
- chia/wallet/transaction_record.py +2 -2
- chia/wallet/util/blind_signer_tl.py +3 -2
- chia/wallet/util/compute_hints.py +3 -2
- chia/wallet/util/compute_memos.py +2 -2
- chia/wallet/util/curry_and_treehash.py +1 -2
- chia/wallet/util/merkle_tree.py +1 -1
- chia/wallet/util/merkle_utils.py +1 -1
- chia/wallet/util/new_peak_queue.py +2 -1
- chia/wallet/util/notifications.py +5 -4
- chia/wallet/util/peer_request_cache.py +3 -2
- chia/wallet/util/puzzle_compression.py +6 -4
- chia/wallet/util/puzzle_decorator.py +6 -4
- chia/wallet/util/query_filter.py +3 -2
- chia/wallet/util/tx_config.py +3 -3
- chia/wallet/util/wallet_sync_utils.py +2 -2
- chia/wallet/util/wallet_types.py +2 -3
- chia/wallet/vc_wallet/cr_cat_drivers.py +18 -22
- chia/wallet/vc_wallet/cr_cat_wallet.py +14 -10
- chia/wallet/vc_wallet/cr_outer_puzzle.py +2 -2
- chia/wallet/vc_wallet/vc_drivers.py +50 -68
- chia/wallet/vc_wallet/vc_store.py +2 -2
- chia/wallet/vc_wallet/vc_wallet.py +47 -15
- chia/wallet/wallet.py +51 -46
- chia/wallet/wallet_action_scope.py +4 -0
- chia/wallet/wallet_blockchain.py +12 -7
- chia/wallet/wallet_coin_record.py +3 -2
- chia/wallet/wallet_coin_store.py +3 -2
- chia/wallet/wallet_info.py +2 -1
- chia/wallet/wallet_interested_store.py +3 -2
- chia/wallet/wallet_nft_store.py +4 -4
- chia/wallet/wallet_node.py +3 -4
- chia/wallet/wallet_pool_store.py +3 -4
- chia/wallet/wallet_protocol.py +19 -5
- chia/wallet/wallet_puzzle_store.py +2 -2
- chia/wallet/wallet_retry_store.py +3 -6
- chia/wallet/wallet_singleton_store.py +2 -2
- chia/wallet/wallet_state_manager.py +20 -197
- chia/wallet/wallet_transaction_store.py +2 -2
- chia/wallet/wallet_user_store.py +2 -1
- chia/wallet/wallet_weight_proof_handler.py +3 -2
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/METADATA +3 -2
- chia_blockchain-2.5.3rc1.dist-info/RECORD +891 -0
- mozilla-ca/cacert.pem +64 -33
- chia/_tests/clvm/test_condition_codes.py +0 -13
- chia/_tests/cmds/wallet/test_dao.py +0 -565
- chia/_tests/wallet/dao_wallet/__init__.py +0 -0
- chia/_tests/wallet/dao_wallet/config.py +0 -3
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +0 -1330
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +0 -3488
- chia/cmds/dao.py +0 -1064
- chia/cmds/dao_funcs.py +0 -598
- chia/consensus/puzzles/__init__.py +0 -0
- chia/consensus/puzzles/chialisp_deserialisation.clsp +0 -69
- chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +0 -1
- chia/consensus/puzzles/rom_bootstrap_generator.clsp +0 -37
- chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +0 -1
- chia/full_node/puzzles/__init__.py +0 -0
- chia/full_node/puzzles/block_program_zero.clsp +0 -14
- chia/full_node/puzzles/block_program_zero.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp +0 -5
- chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +0 -7
- chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +0 -1
- chia/full_node/puzzles/decompress_puzzle.clsp +0 -6
- chia/full_node/puzzles/decompress_puzzle.clsp.hex +0 -1
- chia/pools/puzzles/__init__.py +0 -0
- chia/pools/puzzles/pool_member_innerpuz.clsp +0 -70
- chia/pools/puzzles/pool_member_innerpuz.clsp.hex +0 -1
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +0 -69
- chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +0 -1
- chia/simulator/simulator_constants.py +0 -13
- chia/types/blockchain_format/foliage.py +0 -8
- chia/types/blockchain_format/pool_target.py +0 -5
- chia/types/blockchain_format/reward_chain_block.py +0 -6
- chia/types/blockchain_format/sized_bytes.py +0 -11
- chia/util/ints.py +0 -19
- chia/wallet/cat_wallet/dao_cat_info.py +0 -28
- chia/wallet/cat_wallet/dao_cat_wallet.py +0 -669
- chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
- chia/wallet/cat_wallet/puzzles/cat_truths.clib +0 -31
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp +0 -397
- chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +0 -25
- chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +0 -15
- chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +0 -26
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +0 -42
- chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +0 -1
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +0 -24
- chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +0 -1
- chia/wallet/dao_wallet/__init__.py +0 -0
- chia/wallet/dao_wallet/dao_info.py +0 -61
- chia/wallet/dao_wallet/dao_utils.py +0 -811
- chia/wallet/dao_wallet/dao_wallet.py +0 -2119
- chia/wallet/did_wallet/puzzles/__init__.py +0 -0
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +0 -135
- chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +0 -1
- chia/wallet/payment.py +0 -33
- chia/wallet/puzzles/augmented_condition.clsp +0 -13
- chia/wallet/puzzles/augmented_condition.clsp.hex +0 -1
- chia/wallet/puzzles/condition_codes.clib +0 -77
- chia/wallet/puzzles/curry-and-treehash.clib +0 -102
- chia/wallet/puzzles/curry.clib +0 -135
- chia/wallet/puzzles/curry_by_index.clib +0 -16
- chia/wallet/puzzles/dao_cat_eve.clsp +0 -17
- chia/wallet/puzzles/dao_cat_eve.clsp.hex +0 -1
- chia/wallet/puzzles/dao_cat_launcher.clsp +0 -36
- chia/wallet/puzzles/dao_cat_launcher.clsp.hex +0 -1
- chia/wallet/puzzles/dao_finished_state.clsp +0 -35
- chia/wallet/puzzles/dao_finished_state.clsp.hex +0 -1
- chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_lockup.clsp +0 -288
- chia/wallet/puzzles/dao_lockup.clsp.hex +0 -1
- chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal.clsp +0 -377
- chia/wallet/puzzles/dao_proposal.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal_timer.clsp +0 -78
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_proposal_validator.clsp +0 -87
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex +0 -1
- chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +0 -240
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +0 -1
- chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +0 -1
- chia/wallet/puzzles/dao_treasury.clsp +0 -115
- chia/wallet/puzzles/dao_treasury.clsp.hex +0 -1
- chia/wallet/puzzles/dao_update_proposal.clsp +0 -44
- chia/wallet/puzzles/dao_update_proposal.clsp.hex +0 -1
- chia/wallet/puzzles/json.clib +0 -25
- chia/wallet/puzzles/merkle_utils.clib +0 -18
- chia/wallet/puzzles/notification.clsp +0 -7
- chia/wallet/puzzles/notification.clsp.hex +0 -1
- chia/wallet/puzzles/p2_1_of_n.clsp +0 -22
- chia/wallet/puzzles/p2_1_of_n.clsp.hex +0 -1
- chia/wallet/puzzles/p2_conditions.clsp +0 -3
- chia/wallet/puzzles/p2_conditions.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_conditions.clsp +0 -18
- chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_puzzle.clsp +0 -19
- chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +0 -91
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +0 -108
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +0 -1
- chia/wallet/puzzles/p2_parent.clsp +0 -19
- chia/wallet/puzzles/p2_parent.clsp.hex +0 -1
- chia/wallet/puzzles/p2_puzzle_hash.clsp +0 -18
- chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton.clsp +0 -30
- chia/wallet/puzzles/p2_singleton.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_aggregator.clsp +0 -81
- chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +0 -50
- chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +0 -1
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +0 -47
- chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/puzzles/settlement_payments.clsp +0 -49
- chia/wallet/puzzles/settlement_payments.clsp.hex +0 -1
- chia/wallet/puzzles/sha256tree.clib +0 -11
- chia/wallet/puzzles/singleton_launcher.clsp +0 -16
- chia/wallet/puzzles/singleton_launcher.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_top_layer.clsp +0 -177
- chia/wallet/puzzles/singleton_top_layer.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +0 -107
- chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +0 -1
- chia/wallet/puzzles/singleton_truths.clib +0 -21
- chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +0 -3
- chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +0 -1
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +0 -304
- chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +0 -1
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +0 -45
- chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +0 -30
- chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +0 -75
- chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +0 -32
- chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +0 -80
- chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +0 -163
- chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +0 -16
- chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +0 -74
- chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +0 -23
- chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +0 -1
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +0 -64
- chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +0 -1
- chia_blockchain-2.5.2rc2.dist-info/RECORD +0 -1042
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/LICENSE +0 -0
- {chia_blockchain-2.5.2rc2.dist-info → chia_blockchain-2.5.3rc1.dist-info}/WHEEL +0 -0
- {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)
|