├── docs ├── dao-management │ ├── authz │ │ ├── README.md │ │ ├── revoke.md │ │ ├── grant.md │ │ ├── execute.md │ │ └── limitation.md │ ├── subdaos │ │ ├── README.md │ │ ├── act-on-behalf-of-subdao.md │ │ ├── how-to-create.md │ │ └── what.md │ ├── treasury │ │ ├── README.md │ │ ├── vesting.md │ │ ├── staking.md │ │ ├── send.md │ │ ├── tokens-and-nfts.md │ │ └── cross-chain.md │ ├── manage-members │ │ ├── README.md │ │ ├── joining-leaving-token-based-dao.md │ │ └── joining-leaving-member-based-dao.md │ ├── update-info.md │ ├── create-a-dao.md │ └── cross-chain.md ├── dao-governance │ ├── proposals │ │ ├── README.md │ │ ├── how-to-vote-on-a-proposal.md │ │ ├── how-to-create-a-proposal.md │ │ ├── what.md │ │ ├── types.md │ │ ├── bulk-import-actions.md │ │ ├── how-to-change-a-pre-propose-module.md │ │ ├── how-to-add-a-proposal-module.md │ │ └── autofill-proposal-link.md │ ├── configuration │ │ ├── README.md │ │ ├── staking.md │ │ ├── proposal-submission.md │ │ └── voting.md │ ├── notifications │ │ ├── README.md │ │ └── telegram.md │ ├── migration.md │ └── manage-vetoable-daos.md ├── introduction │ ├── quickstart │ │ ├── README.md │ │ ├── join-a-dao │ │ │ ├── README.md │ │ │ ├── joining-leaving-member-based-dao.md │ │ │ └── joining-leaving-token-based-dao.md │ │ ├── congratulations.md │ │ ├── create-a-proposal.md │ │ ├── voting.md │ │ └── create-a-dao.md │ ├── how-to-contribute.md │ ├── technical-breakdown.md │ ├── whats-a-blockchain.md │ └── whats-a-dao.md ├── .gitbook │ └── assets │ │ ├── puzzle.png │ │ ├── tokens.png │ │ ├── authz-exec.png │ │ ├── membership.png │ │ ├── new-subdao.png │ │ ├── vesting1.png │ │ ├── vesting3.png │ │ ├── vesting4.png │ │ ├── vetoable1.png │ │ ├── vetoable2.png │ │ ├── vetoable3.png │ │ ├── authz-exec10.png │ │ ├── authz-exec11.png │ │ ├── authz-exec12.png │ │ ├── authz-exec13.png │ │ ├── authz-exec2.png │ │ ├── authz-exec7.png │ │ ├── authz-exec8.png │ │ ├── authz-exec9.png │ │ ├── chain-picker.png │ │ ├── spend-action.png │ │ ├── subdaos-tab.png │ │ ├── add-member-done.png │ │ ├── create-dao-done.png │ │ ├── create-proposal.png │ │ ├── leap-extension.png │ │ ├── manage-staking.png │ │ ├── osmosis-faucet.png │ │ ├── proposal-vote.png │ │ ├── proposals-tab.png │ │ ├── staking-options.png │ │ ├── tg-add-desktop.png │ │ ├── tg-add-mobile.jpg │ │ ├── tg-start-mobile.jpg │ │ ├── unstaking-modal.png │ │ ├── welcome-to-leap.png │ │ ├── create-dao-review.png │ │ ├── create-dao-title.png │ │ ├── dao-admin-execute.png │ │ ├── proposal-no-votes.png │ │ ├── spend-action-ibc.png │ │ ├── staked-membership.png │ │ ├── tg-start-desktop.png │ │ ├── tg-started-mobile.jpg │ │ ├── token-based-home.png │ │ ├── treasury-nfts-tab.png │ │ ├── add-member-add-meow.png │ │ ├── bulk-import-actions.png │ │ ├── change-appearance1.png │ │ ├── change-appearance2.png │ │ ├── change-appearance3.png │ │ ├── change-appearance4.png │ │ ├── change-appearance5.png │ │ ├── change-appearance6.png │ │ ├── create-dao-members.png │ │ ├── create-proposal-done.png │ │ ├── create-proposal-form.png │ │ ├── proposal-vote-done.png │ │ ├── remove-member-action.png │ │ ├── spend-tokens-modal.png │ │ ├── staking-token-picker.png │ │ ├── tg-add-group-desktop.png │ │ ├── tg-add-group-mobile.jpg │ │ ├── tg-started-desktop.png │ │ ├── treasury-manage-nfts.png │ │ ├── upgrade-to-v2-action.png │ │ ├── wallet-copy-address.png │ │ ├── add-member-add-action.png │ │ ├── create-proposal-button.png │ │ ├── manage-staking-action.png │ │ ├── single-choice-proposal.png │ │ ├── subdao-home-recognized.png │ │ ├── subdaos-tab-recognized.png │ │ ├── treasury-manage-tokens.png │ │ ├── add-member-action-modal.png │ │ ├── add-member-manage-members.png │ │ ├── create-dao-wallet-approve.png │ │ ├── dao-governance-category.png │ │ ├── multiple-choice-proposal.png │ │ ├── unregistered-subdao-home.png │ │ ├── upgrade-to-v2-action-done.png │ │ ├── your-membership-unstaking.png │ │ ├── add-member-proposal-execute.png │ │ ├── enable-multiple-choice-done.png │ │ ├── manage-staking-unstake-all.png │ │ ├── open-proposal-already-voted.png │ │ ├── multiple-choice-proposal-done.png │ │ ├── prefilled-subdao-recognition.png │ │ ├── proposals-tab-with-proposals.png │ │ ├── spend-action-recipient-chain.png │ │ ├── your-membership-nothing-staked.png │ │ ├── dao-admin-execute-manage-members.png │ │ ├── create-cross-chain-account-action.png │ │ ├── enable-multiple-choice-add-action.png │ │ ├── multiple-choice-proposal-option-1.png │ │ ├── multiple-choice-proposal-option-2.png │ │ ├── single-choice-proposal-vote-options.png │ │ ├── spend-action-dao-treasury-category.png │ │ ├── action-modal-dao-governance-category.png │ │ ├── add-action-modal-dao-governance-category.png │ │ ├── add-action-modal-dao-treasury-category.png │ │ ├── create-cross-chain-account-action-multiple.png │ │ ├── cross-chain-action-dao-governance-category.png │ │ ├── manage-staking-action-dao-treasury-category.png │ │ └── enable-multiple-choice-dao-governance-category.png ├── upgrading │ ├── v2.md │ └── v1 │ │ ├── multisig.md │ │ └── dao.md ├── README.md └── SUMMARY.md ├── .vscode └── settings.json ├── package.json ├── README.md ├── CODE_OF_CONDUCT.md └── CONTRIBUTING.md /docs/dao-management/authz/README.md: -------------------------------------------------------------------------------- 1 | # Authz 2 | 3 | -------------------------------------------------------------------------------- /docs/dao-management/subdaos/README.md: -------------------------------------------------------------------------------- 1 | # SubDAOs 2 | 3 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/README.md: -------------------------------------------------------------------------------- 1 | # Treasury 2 | 3 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/README.md: -------------------------------------------------------------------------------- 1 | # Proposals 2 | 3 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/README.md: -------------------------------------------------------------------------------- 1 | # Quickstart 2 | 3 | -------------------------------------------------------------------------------- /docs/dao-governance/configuration/README.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | -------------------------------------------------------------------------------- /docs/dao-governance/notifications/README.md: -------------------------------------------------------------------------------- 1 | # Notifications 2 | 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rewrap.wrappingColumn": 9999999 3 | } 4 | -------------------------------------------------------------------------------- /docs/dao-management/manage-members/README.md: -------------------------------------------------------------------------------- 1 | # Manage Members 2 | 3 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/join-a-dao/README.md: -------------------------------------------------------------------------------- 1 | # Join a DAO 2 | 3 | -------------------------------------------------------------------------------- /docs/.gitbook/assets/puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/puzzle.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tokens.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/membership.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/membership.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/new-subdao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/new-subdao.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vesting1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vesting1.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vesting3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vesting3.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vesting4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vesting4.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vetoable1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vetoable1.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vetoable2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vetoable2.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/vetoable3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/vetoable3.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec10.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec11.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec12.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec13.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec2.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec7.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec8.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/authz-exec9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/authz-exec9.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/chain-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/chain-picker.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/spend-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/spend-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/subdaos-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/subdaos-tab.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-dao-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-dao-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-proposal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-proposal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/leap-extension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/leap-extension.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/manage-staking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/manage-staking.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/osmosis-faucet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/osmosis-faucet.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/proposal-vote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/proposal-vote.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/proposals-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/proposals-tab.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/staking-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/staking-options.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-add-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-add-desktop.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-add-mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-add-mobile.jpg -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-start-mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-start-mobile.jpg -------------------------------------------------------------------------------- /docs/.gitbook/assets/unstaking-modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/unstaking-modal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/welcome-to-leap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/welcome-to-leap.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-dao-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-dao-review.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-dao-title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-dao-title.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/dao-admin-execute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/dao-admin-execute.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/proposal-no-votes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/proposal-no-votes.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/spend-action-ibc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/spend-action-ibc.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/staked-membership.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/staked-membership.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-start-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-start-desktop.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-started-mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-started-mobile.jpg -------------------------------------------------------------------------------- /docs/.gitbook/assets/token-based-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/token-based-home.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/treasury-nfts-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/treasury-nfts-tab.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@dao-dao/docs", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": {} 6 | } 7 | -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-add-meow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-add-meow.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/bulk-import-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/bulk-import-actions.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance1.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance2.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance3.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance4.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance5.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/change-appearance6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/change-appearance6.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-dao-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-dao-members.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-proposal-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-proposal-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-proposal-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-proposal-form.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/proposal-vote-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/proposal-vote-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/remove-member-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/remove-member-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/spend-tokens-modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/spend-tokens-modal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/staking-token-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/staking-token-picker.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-add-group-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-add-group-desktop.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-add-group-mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-add-group-mobile.jpg -------------------------------------------------------------------------------- /docs/.gitbook/assets/tg-started-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/tg-started-desktop.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/treasury-manage-nfts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/treasury-manage-nfts.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/upgrade-to-v2-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/upgrade-to-v2-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/wallet-copy-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/wallet-copy-address.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-add-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-add-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-proposal-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-proposal-button.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/manage-staking-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/manage-staking-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/single-choice-proposal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/single-choice-proposal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/subdao-home-recognized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/subdao-home-recognized.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/subdaos-tab-recognized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/subdaos-tab-recognized.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/treasury-manage-tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/treasury-manage-tokens.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-action-modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-action-modal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-manage-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-manage-members.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-dao-wallet-approve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-dao-wallet-approve.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/dao-governance-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/dao-governance-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/multiple-choice-proposal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/multiple-choice-proposal.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/unregistered-subdao-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/unregistered-subdao-home.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/upgrade-to-v2-action-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/upgrade-to-v2-action-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/your-membership-unstaking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/your-membership-unstaking.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-member-proposal-execute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-member-proposal-execute.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/enable-multiple-choice-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/enable-multiple-choice-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/manage-staking-unstake-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/manage-staking-unstake-all.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/open-proposal-already-voted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/open-proposal-already-voted.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/multiple-choice-proposal-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/multiple-choice-proposal-done.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/prefilled-subdao-recognition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/prefilled-subdao-recognition.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/proposals-tab-with-proposals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/proposals-tab-with-proposals.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/spend-action-recipient-chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/spend-action-recipient-chain.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/your-membership-nothing-staked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/your-membership-nothing-staked.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/dao-admin-execute-manage-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/dao-admin-execute-manage-members.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-cross-chain-account-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-cross-chain-account-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/enable-multiple-choice-add-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/enable-multiple-choice-add-action.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/multiple-choice-proposal-option-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/multiple-choice-proposal-option-1.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/multiple-choice-proposal-option-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/multiple-choice-proposal-option-2.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/single-choice-proposal-vote-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/single-choice-proposal-vote-options.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/spend-action-dao-treasury-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/spend-action-dao-treasury-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/action-modal-dao-governance-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/action-modal-dao-governance-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-action-modal-dao-governance-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-action-modal-dao-governance-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/add-action-modal-dao-treasury-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/add-action-modal-dao-treasury-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/create-cross-chain-account-action-multiple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/create-cross-chain-account-action-multiple.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/cross-chain-action-dao-governance-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/cross-chain-action-dao-governance-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/manage-staking-action-dao-treasury-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/manage-staking-action-dao-treasury-category.png -------------------------------------------------------------------------------- /docs/.gitbook/assets/enable-multiple-choice-dao-governance-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DA0-DA0/docs/HEAD/docs/.gitbook/assets/enable-multiple-choice-dao-governance-category.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DAO DAO docs 2 | 3 | This website is built using [GitBook](https://gitbook.com). 4 | 5 | Deployed live at https://dao-dao-1.gitbook.io/docs. 6 | 7 | ## Contributing 8 | 9 | Interested in contributing to DAO DAO? Check out [CONTRIBUTING.md](./CONTRIBUTING.md). 10 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of conduct 2 | 3 | Be kind to one another. 4 | 5 | > Good walkers leave no track. 6 | > Good counters don’t use their fingers. 7 | > The best door’s unlocked and unopened. 8 | > The best knot’s not in a rope and can’t be untied. 9 | > 10 | > So wise souls are good at caring for people, 11 | > never turning their back on anyone. 12 | > They’re good at looking after things, 13 | > never turning their back on anything. 14 | > There’s a light hidden here. 15 | > 16 | > Good people teach people who aren’t good yet; 17 | > the less good are the makings of the good. 18 | > Anyone who doesn’t respect a teacher 19 | > or cherish a student 20 | > may be clever, but has gone astray. 21 | > There’s a deep mystery here. 22 | 23 | - [Tao Te Ching (Ursula Le Guin transaltion)](https://github.com/lovingawareness/tao-te-ching/blob/master/Ursula%20K%20Le%20Guin.md) 24 | -------------------------------------------------------------------------------- /docs/dao-management/subdaos/act-on-behalf-of-subdao.md: -------------------------------------------------------------------------------- 1 | # How to act on behalf of a SubDAO 2 | 3 | As discussed in [What are SubDAOs?](what.md), the admin (or parent DAO) can execute any action on behalf of the SubDAO. Follow this guide or [watch our video guide](https://youtu.be/T8P8TFOU_kU) to learn how. 4 | 5 | In the parent DAO, create a new proposal and add the `DAO Admin Execute` action from the `DAO Governance` category. 6 | 7 | ![DAO Governance category](../../.gitbook/assets/dao-governance-category.png) 8 | 9 | Then, select the SubDAO you want to act on behalf of. 10 | 11 | ![DAO Admin Execute action](../../.gitbook/assets/dao-admin-execute.png) 12 | 13 | Then simply choose the action(s) you want to execute! 14 | 15 | ![DAO Admin Execute with Manage Members action](../../.gitbook/assets/dao-admin-execute-manage-members.png) 16 | 17 | Once you pass and execute the proposal, your action(s) will be executed on behalf of the SubDAO. 18 | -------------------------------------------------------------------------------- /docs/dao-governance/configuration/staking.md: -------------------------------------------------------------------------------- 1 | # Staking 2 | 3 | A DAO's staking configuration determines the rules of the token staking process. Only token-based and NFT-based DAOs have a staking process to configure. Member-based DAOs do not have staking because they do not use tokens. 4 | 5 | ## How to update the staking configuration 6 | 7 | To change the staking configuration of a DAO, you must submit a [governance proposal](../proposals/what.md) containing the `Update Staking Config` action from the `DAO Governance` category. 8 | 9 | ## Parameters 10 | 11 | ### Unstaking duration 12 | 13 | After someone stakes tokens in a DAO, those tokens cannot be immediately unstaked. The unstaking duration is how long they remain locked after deciding to unstake. During the unstaking process, they do _not_ count towards your voting power, and you cannot transfer them. 14 | 15 | This adds a time cost to staking and ensures a greater level of participatory commitment from members. 16 | -------------------------------------------------------------------------------- /docs/introduction/how-to-contribute.md: -------------------------------------------------------------------------------- 1 | # Contribute to DAO DAO! 2 | 3 | DAO DAO rewards the people who contribute to it. 4 | 5 | The first step is to join the community! We generally hang out in Discord ([invite link](https://discord.daodao.zone), be sure to complete the verification process). 6 | 7 | Anyone can contribute, and contributions are not limited to code. Design, bug reports, research, educational materials, translations, and being helpful to other users with questions are all contributions, and are all eligible for rewards! 8 | 9 | Want to get started? [Learn about our retroactive rewards program here](https://docs.google.com/document/d/12WpREOPrvhW3YVxGLoOkrhTgf_bDUy4cn9VKeyH4PUY/edit). 10 | 11 | {% hint style="info" %} 12 | DAO DAO's contributor compensation system is temporarily paused while we figure out our legal plans. For the time being, keep track of your contributions yourself. We fully intend on restarting our system in the near future. 13 | {% endhint %} 14 | 15 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/congratulations.md: -------------------------------------------------------------------------------- 1 | # Congratulations! 2 | 3 | You've created your own DAO. More importantly, you've learned the basics of DAO DAO. 4 | 5 | DAO DAO has **much more to offer**. By taking full advantage of proposal actions, you can create extremely simple or fascinatingly complex governance systems. The limits are your imagination and your ability to organize! Check out the `Recipes` section for more information. 6 | 7 | One of the most important next steps to governing successful communities on DAO DAO is learning [how to design your DAO securely](https://medium.com/@dao-dao/best-security-practices-for-daos-59484932377f). While we build DAO DAO to be powerful and composable, it is easy to shoot yourself in the foot. A great place to double check your assumptions and discuss ideas with others before managing sensitive assets is [our Discord server](https://discord.daodao.zone). 8 | 9 | Anything **unclear** or **buggy** in this tutorial? [Please report it](https://github.com/DA0-DA0/docs/issues)! 10 | -------------------------------------------------------------------------------- /docs/upgrading/v2.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | # V1 -> V2 6 | 7 | To upgrade a V1 DAO (or multisig) to a V2 DAO, you just need to pass and execute a proposal with the `Upgrade to V2` action. 8 | 9 | First, create a new proposal. 10 | 11 | Add the `Upgrade to V2` action under the `DAO Governance` category. 12 | 13 | ![Action picker modal with DAO Governance category](../.gitbook/assets/action-modal-dao-governance-category.png) 14 | 15 | ![DAO Governance category with Upgrade to V2 action](../.gitbook/assets/upgrade-to-v2-action.png) 16 | 17 | ![Upgrade to V2 action](../.gitbook/assets/upgrade-to-v2-action-done.png) 18 | 19 | If you created any SubDAOs while on V1, you can optionally choose to officially recognize them as SubDAOs (which will show up on the DAO's page). 20 | 21 | Once you submit, pass, and execute this proposal, your DAO will be upgraded to V2! 22 | 23 | ## Why upgrade 24 | 25 | By upgrading from V1 to V2, you'll receive new feature releases from DAO DAO and use the latest audited smart contracts. 26 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/how-to-vote-on-a-proposal.md: -------------------------------------------------------------------------------- 1 | # How to vote on a proposal 2 | 3 | Once you've [created a proposal](how-to-create-a-proposal.md), members of the DAO need to vote on it. 4 | 5 | ## Steps 6 | 7 | To begin, starting from your DAO's page, navigate to the proposal from the **Proposals** tab. 8 | 9 | ![Proposals tab](../../.gitbook/assets/proposals-tab-with-proposals.png) 10 | 11 | Then, click on the proposal you want to vote on in the list. 12 | 13 | ![Proposal page](../../.gitbook/assets/proposal-no-votes.png) 14 | 15 | Click on the desired vote option on the left side of the page. 16 | 17 | ![Vote options](../../.gitbook/assets/single-choice-proposal-vote-options.png) 18 | 19 | Click on the **Cast your vote** button to submit your vote. Approve the transaction in your wallet to confirm submission. 20 | 21 | ![Proposal still open](../../.gitbook/assets/open-proposal-already-voted.png) 22 | 23 | The proposal will be updated with your vote. If your vote was sufficient to pass or fail the proposal, it will now be complete. Since this proposal's outcome has not yet been determined, it is still open for voting. 24 | -------------------------------------------------------------------------------- /docs/dao-governance/migration.md: -------------------------------------------------------------------------------- 1 | # Migration 2 | 3 | There is no standardized migration process for DAOs since configurations can vary significantly, especially across chains. 4 | 5 | It's best practice to create a new DAO and formulate a well-structured migration plan that you communicate to the community. A migration plan should include: 6 | 7 | * Reasons outlining the need for the migration 8 | * The timeline for the migration 9 | * How voting power will be transferred 10 | * Security measures that will be taken 11 | 12 | ## Key considerations 13 | 14 | As people migrate, voting power will be decreasing in the original DAO. This may present a security risk if insufficient voting power is held in the original DAO to vote down malicious proposals, especially if voting power can be purchased on a market. 15 | 16 | Some potential solutions include: 17 | 18 | * Implementing a migration committee entrusted with the DAO's assets during the migration period 19 | * Creating a security council that can veto malicious proposals in either/both DAOs 20 | * Creating a security council that must approve all proposals in either/both DAOs before they open for voting 21 | 22 | As always, be very careful and intentional about the migration process, especially when there are assets at stake. 23 | -------------------------------------------------------------------------------- /docs/upgrading/v1/multisig.md: -------------------------------------------------------------------------------- 1 | # Upgrading a multisig 2 | 3 | {% hint style="info" %} 4 | There are newer versions available. You must first upgrade to V1, and then follow the newer upgrade instructions to get to the most recent version. 5 | {% endhint %} 6 | 7 | To upgrade a beta multisig to a v1 multisig: 8 | 9 | 1. Create a new proposal. 10 | 2. Press the `Add Component +` button and select the `🦢 Upgrade to V1` template. 11 | 12 | The template will then walk you through the steps to migrate to your new V1 multisig. After you fill out the template, make sure to double check that the new multisig is configured correctly. 13 | 14 | A good way of testing that your new multisig is correct is to make a new proposal in the new one called `Acceptance of V1 multisig`. Then, have members vote on the proposal. If everyone votes and the proposal passes, it's a good sign that your multisig is configured correctly. 15 | 16 | ## Why upgrade 17 | 18 | By upgrading from beta to V1, you'll continue to receive new feature releases from DAO DAO and start using [audited](https://github.com/DA0-DA0/dao-contracts/releases/tag/v1.0.0) smart contracts. 19 | 20 | Beta DAOs and multisigs have been moved to [legacy.daodao.zone](https://legacy.daodao.zone) and no longer receive new feature releases. 21 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/how-to-create-a-proposal.md: -------------------------------------------------------------------------------- 1 | # How to create a proposal 2 | 3 | If you don't know what a proposal is, read the [proposal explanation doc](what.md) first. 4 | 5 | {% hint style="info" %} 6 | Members must join the DAO before a proposal is made in order to vote on it. Membership changes during a proposal's voting period are ignored as they only apply to future proposals. 7 | {% endhint %} 8 | 9 | ## Steps 10 | 11 | To begin, starting from your DAO's page, navigate to **Proposals > New Proposal**. 12 | 13 | ![Create proposal button](../../.gitbook/assets/proposals-tab.png) 14 | 15 | ![Proposal creation form](../../.gitbook/assets/create-proposal.png) 16 | 17 | Then, fill in the proposal's name, description, and actions (if needed). 18 | 19 | {% hint style="info" %} 20 | **What is an action?**\ 21 | [Proposal actions](what.md#actions) allow you to add rich functionality to proposals: software instructions that execute on the blockchain when a proposal is passed and executed. Read the [proposal docs](what.md) to learn more. 22 | {% endhint %} 23 | 24 | If you want to create a multiple choice proposal, check out the [multiple choice proposal docs](types.md#multiple-choice). 25 | 26 | To preview how the proposal will look once its created, press **Preview**. 27 | 28 | Once you are satisfied with the proposal, press **Publish**. Your wallet will prompt you to approve the transaction. 29 | 30 | Once you approve it, your proposal will be live and the DAO members can vote on it! 31 | 32 | ![Created proposal](../../.gitbook/assets/create-proposal-done.png) 33 | -------------------------------------------------------------------------------- /docs/introduction/technical-breakdown.md: -------------------------------------------------------------------------------- 1 | # Technical breakdown 2 | 3 | [DAO DAO's smart contracts](https://github.com/DA0-DA0/dao-contracts) are built with CosmWasm and thus run on blockchains that support CosmWasm: 4 | 5 | - [Cosmos Hub](https://hub.cosmos.network) 6 | - [Juno](https://junonetwork.io) 7 | - [Osmosis](https://osmosis.zone) 8 | - [Neutron](https://www.neutron.org) 9 | - [Stargaze](https://stargaze.zone) 10 | - [Migaloo](https://twitter.com/migaloo_zone) 11 | - Terra 12 | - Terra Classic 13 | - [Oraichain](https://orai.io) 14 | - [Kujira](https://kujira.network) 15 | - [Rujira/THORChain](https://rujira.network) 16 | - [BitSong](https://bitsong.io) 17 | - [OmniFlix](https://omniflix.network) 18 | 19 | ## What is CosmWasm? 20 | 21 | CosmWasm is a [WebAssembly](https://webassembly.org) virtual machine that runs in a [Cosmos SDK](https://docs.cosmos.network) module. 22 | 23 | In practice, CosmWasm smart contracts (like DAO DAO's) are written in Rust. 24 | 25 | ## What is Rust? 26 | 27 | [Rust](https://www.rust-lang.org) is a performant, memory-safe, and thread-safe programming language with a rich type system. 28 | 29 | Writing smart contracts in Rust allows us to perform better security analysis on our contracts, which in turn protects your DAOs from common attacks. 30 | 31 | ## What about the UI? 32 | 33 | [DAO DAO's UI](https://github.com/DA0-DA0/dao-dao-ui) is built with [Next.js](https://nextjs.org) in [TypeScript](https://www.typescriptlang.org). 34 | 35 | As the UI is the primary entrypoint for users interacting with DAO DAO DAOs, its security is as important as the smart contracts themselves. TypeScript increases the likelihood that bugs are detected earlier, during development. 36 | -------------------------------------------------------------------------------- /docs/dao-governance/manage-vetoable-daos.md: -------------------------------------------------------------------------------- 1 | # Manage Vetoable DAOs 2 | 3 | Your DAO can opt to display proposals from affiliated DAOs that you have the power to veto. This guide outlines the steps for enabling or disabling this option. 4 | 5 | ## 1. Create Proposal 6 | 7 | a. From your DAO page, example circled in green, click the Proposal tab, indicated by the yellow arrow. 8 | 9 |
10 | 11 | b. Create a new proposal by clicking the +Proposal button. 12 | 13 | c. Give your proposal a title and description. 14 | 15 |
16 | 17 | ## 2. Add Actions 18 | 19 | a. From the Action Library, select the DAO Governance tab and then the Manage Vetoable DAOs option, indicated with a green arrow in the picture below. 20 | 21 | ![Manage vetoable daos action library](../.gitbook/assets/vetoable2.png) 22 | 23 | b. This will cause the Manage Vetoable DAOs box to appear, where you can enable or disable this feature. Paste an Osmosis address or search for the chosen DAO by name in the DAO prompt. 24 | 25 | ![Manage vetoable daos action box](../.gitbook/assets/vetoable3.png) 26 | 27 | c. At the bottom of the screen will be an option to publish your proposal. Once you have reviewed your changes, publish your proposal to start the vote! 28 | 29 | ## 3. Vote 30 | 31 | a. Once the proposal is live, you and other DAO members can vote. [Learn more about voting here!](proposals/how-to-vote-on-a-proposal.md) 32 | 33 | b. If the DAO membership votes in favor of the proposal, all of the change will happen automatically at the close of the voting period. 34 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/vesting.md: -------------------------------------------------------------------------------- 1 | # Enable vesting payments 2 | 3 | This feature allows DAOs to set up vesting contracts. A vesting payment distributes funds according to any schedule you choose, and the DAO can enable or disable early cancelation. 4 | 5 | To create vesting payments, you must first create a vesting payment manager on each chain that you want to pay from, and the DAO must have an account on each chain before you can create the manager. 6 | 7 | ## 1. Create a new proposal 8 | 9 | a. From your DAO page, select the Proposal tab and click the +Proposal button. 10 | 11 |
12 | 13 | b. Add a relevant title and description to your proposal. 14 | 15 | c. From the Action Library, select Enable Vesting Payments. 16 | 17 |
18 | 19 | d. Connect the chains on which you wish to enable vesting payments. 20 | 21 |
22 | 23 | e. publish your proposal by clicking the Publish button at the button of the screen. 24 | 25 |
26 | 27 | ## 2. Vote 28 | 29 | a. Once the proposal is live, you and other DAO members can vote. If the majority of votes have been cast and the outcome of the vote is decided, the vote can be ended early via the execute button found on the proposal's page. 30 | 31 | b. If the DAO membership votes in favor of enabling vesting payments, the feature will be automatically enabled at the close of the voting period. 32 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/staking.md: -------------------------------------------------------------------------------- 1 | # Manage staking 2 | 3 | You can stake tokens on the DAO's home chain and any chain that the DAO has created a [cross-chain account](cross-chain.md) on. 4 | 5 | Check out our YouTube for videos for [managing staking](https://youtu.be/DQzT3T_tPF8), [claiming rewards](https://youtu.be/SLJTuZMra7c), [redelegating](https://youtu.be/Jvx6Cd48EZw), or [unstaking](https://youtu.be/NToj_x_fid8) 6 | 7 | ## Steps 8 | 9 | [Create a proposal](../../dao-governance/proposals/how-to-create-a-proposal.md) and add the `Manage Staking` action from the `DAO Treasury` category. 10 | 11 | ![Create proposal form](../../.gitbook/assets/single-choice-proposal.png) 12 | 13 | ![DAO Treasury category in Add an action modal](../../.gitbook/assets/add-action-modal-dao-treasury-category.png) 14 | 15 | ![Manage Staking action in DAO Treasury category](../../.gitbook/assets/manage-staking-action-dao-treasury-category.png) 16 | 17 | ![Manage Staking action](../../.gitbook/assets/manage-staking-action.png) 18 | 19 | You can choose any token native to the chains the DAO has accounts on. If you want to stake tokens on a chain that the DAO does not have an account on, you have to [create a cross-chain account](cross-chain.md) on that chain first. 20 | 21 | Once this proposal is passed and executed, the tokens will be staked. 22 | 23 | ## Other staking options 24 | 25 | Aside from staking, you can also unstake, restake, claim rewards, and change the rewards withdrawal address. 26 | 27 | ![Staking options](../../.gitbook/assets/staking-options.png) 28 | 29 | ### Changing the rewards withdrawal address 30 | 31 | You can change the rewards withdrawal address to a wallet or DAO other than the DAO itself. This may be useful if you have a SubDAO that you want to receive staking rewards instead. 32 | -------------------------------------------------------------------------------- /docs/dao-governance/configuration/proposal-submission.md: -------------------------------------------------------------------------------- 1 | # Proposal submission 2 | 3 | A DAO's proposal submission configuration manages the rules around submitting a proposal for voting. 4 | 5 | ## How to update the proposal submission configuration 6 | 7 | To change the proposal submission configuration of a DAO, you must submit a [governance proposal](../proposals/what.md) containing the `Update Proposal Submission Config` action from the `DAO Governance` category. 8 | 9 | If you have multiple choice proposals enabled, you will instead see two different actions, one labeled `Update Single Choice Proposal Submission Config` and the other `Update Multiple Choice Proposal Submission Config`. You may configure each proposal type (single and multiple choice) separately, though they should probably be kept in sync so the voting experience is consistent. 10 | 11 | ## Parameters 12 | 13 | You can update all of these parameters with the action(s) mentioned above at any time. 14 | 15 | ### Proposal deposit 16 | 17 | This is a required deposit someone must put down to create a proposal. This can be the DAO's governance token, if it exists, or any other token on the chain. By default, this is disabled. 18 | 19 | #### Refunding proposal deposits 20 | 21 | There are three ways to handle proposal deposits: 22 | 23 | 1. `Always` refund proposal deposits, regardless of whether the proposal passes or fails. 24 | 2. `Only passed proposals` refund proposal deposits. 25 | 3. `Never` refund proposal deposits. 26 | 27 | {% hint style="info" %} 28 | You may want to enable this if you are worried about spam. 29 | {% endhint %} 30 | 31 | ### Proposal submission policy 32 | 33 | This determines who is allowed to submit proposals to your DAO. The options are: 34 | 35 | - Only members 36 | - Anyone 37 | 38 | It defaults to `Only members`. 39 | -------------------------------------------------------------------------------- /docs/dao-management/subdaos/how-to-create.md: -------------------------------------------------------------------------------- 1 | # How to create a SubDAO 2 | 3 | Creating a SubDAO is as easy as creating a regular DAO, with one extra step at the end! 4 | 5 | To start, go to the DAO you want to create a SubDAO for, and navigate to **SubDAOs > New SubDAO**. 6 | 7 | ![Create SubDAO button](../../.gitbook/assets/subdaos-tab.png) 8 | 9 | You will be brought to an interface that looks identical to the interface for creating a DAO, except the header should contain the name of the parent DAO. 10 | 11 | ![New SubDAO UI](../../.gitbook/assets/new-subdao.png) 12 | 13 | Create the SubDAO like you would any other DAO. If you need help, check out [Create your first DAO](../../introduction/quickstart/create-a-dao.md) in the Quickstart section. 14 | 15 | ![SubDAO home](../../.gitbook/assets/unregistered-subdao-home.png) 16 | 17 | Lastly, the parent DAO needs to recognize the SubDAO with a proposal. This security step prevents anyone from creating a SubDAO of an organization and pretending to be a part of it. 18 | 19 | Check out our YouTube for video guide for [adding](https://youtu.be/F42qF2mAYxU) or [removing](https://youtu.be/qpP_WSiju2U) a subDAO from the parent DAO! 20 | 21 | If you are a member of the parent DAO, you can click on the banner at the top of the SubDAO's home page to open the parent DAO's proposal creation page with the action prefilled. 22 | 23 | Clicking the alert banner at the top of the page will take you here: 24 | 25 | ![Parent DAO proposal creation](../../.gitbook/assets/prefilled-subdao-recognition.png) 26 | 27 | Once the parent DAO passes and executes this proposal, the SubDAO will be recognized! 28 | 29 | ![Recognized SubDAO home](../../.gitbook/assets/subdao-home-recognized.png) 30 | 31 | And it will show up in the parent DAO's SubDAOs tab! 32 | 33 | ![Parent DAO SubDAOs tab](../../.gitbook/assets/subdaos-tab-recognized.png) 34 | -------------------------------------------------------------------------------- /docs/dao-management/subdaos/what.md: -------------------------------------------------------------------------------- 1 | # What are SubDAOs? 2 | 3 | A SubDAO is a DAO with another DAO set as its admin, which establishes a hierarchical relationship. The SubDAO's admin (or the **parent DAO**) can execute any action on behalf of the SubDAO. In other words, the parent DAO can force the SubDAO to _do something_, like spend from it's treasury, manage members, or executing a smart contract. 4 | 5 | SubDAOs allow DAOs to build complex organizational structures. You can use SubDAOs to build teams, groups, departments, committees, advisory boards, and more! 6 | 7 | How you design your organization is up to you. Here are some examples: 8 | 9 | - [DAO DAO](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q/subdaos) itself uses SubDAOs to manage various initiatives, like its development processes and validator operations. 10 | - [The Corporation](https://daodao.zone/dao/juno1xd2fed839exdvqfa4nqluyxxclvwul7kd48e9pyfm0z2g90dc37srnqy39/subdaos) was a [LARP](https://en.wikipedia.org/wiki/Live_action_role-playing_game) that relied on SubDAOs heavily, demonstrating how to create a [C-Corp](https://www.investopedia.com/terms/c/c-corporation.asp)-like structure using DAO DAO. 11 | - [Neutron DAO](https://daodao.zone/dao/neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff/subdaos), which manages the [Neutron blockchain](https://www.neutron.org), integrates SubDAOs in its processes. The [Security SubDAO](https://daodao.zone/dao/neutron1fuyxwxlsgjkfjmxfthq8427dm2am3ya3cwcdr8gls29l7jadtazsuyzwcc/home) has special privileges over on-chain features, while the [Grants SubDAO](https://daodao.zone/dao/neutron1zjdv3u6svlazlydmje2qcp44yqkt0059chz8gmyl5yrklmgv6fzq9chelu/home) oversees the distribution of grants in the ecosystem. 12 | 13 | There are many ways take advantage of SubDAOs. Be creative, and show us what you come up with! 14 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/send.md: -------------------------------------------------------------------------------- 1 | # Send tokens 2 | 3 | Sending tokens from a DAO is easy. Tokens can be sent to a recipient on the same chain as the DAO or on another [IBC](../../introduction/whats-a-blockchain.md#how-do-you-send-tokens-between-blockchains)-connected chain. 4 | 5 | ## Steps 6 | 7 | [Create a proposal](../../dao-governance/proposals/how-to-create-a-proposal.md) and add the `Spend` action from the `DAO Treasury` category. 8 | 9 | ![Create proposal form](../../.gitbook/assets/single-choice-proposal.png) 10 | 11 | ![DAO Treasury category in Add an action modal](../../.gitbook/assets/add-action-modal-dao-treasury-category.png) 12 | 13 | ![Spend action in DAO Treasury category](../../.gitbook/assets/spend-action-dao-treasury-category.png) 14 | 15 | ![Spend action](../../.gitbook/assets/spend-action.png) 16 | 17 | ### Change recipient chain 18 | 19 | To choose which chain the tokens should be sent to, click on the dropdown to the left of the recipient address. This can be the same chain as the DAO or any IBC-connected chain. 20 | 21 | ![Spend action recipient chain](../../.gitbook/assets/spend-action-recipient-chain.png) 22 | 23 | Simply choose which chain to send the tokens to. 24 | 25 | ![Chain picker](../../.gitbook/assets/chain-picker.png) 26 | 27 | {% hint style="info" %} 28 | Only chains that have an active IBC connection with the chain the DAO lives on can be chosen. All chains shown in the list should work, but it's always a good idea to double check with someone if you are unsure. If there is a chain missing from the list, or a chain does not appear to work, please reach out to the developers on [Discord](https://discord.daodao.zone). 29 | {% endhint %} 30 | 31 | Once choosing a chain, it will confirm the IBC path the tokens will be sent through. 32 | 33 | ![Spend action with IBC path](../../.gitbook/assets/spend-action-ibc.png) 34 | 35 | For example, the action above will send 1 $JUNO from the DAO's Juno treasury to a wallet on Osmosis. 36 | 37 | Once this proposal is passed and executed, the tokens will be sent. 38 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/create-a-proposal.md: -------------------------------------------------------------------------------- 1 | # Create your first proposal 2 | 3 | After [creating a DAO for your book club](../../introduction/quickstart/create-a-dao.md), I'm sure you're busy telling all of your friends to download Leap so they can join you. Once they join your DAO, why don't we make a governance proposal for everyone to vote on? 4 | 5 | Let's create a proposal to decide what book to read. 6 | 7 | {% hint style="info" %} 8 | If you create a proposal before your friends join, they won't be able to vote on it since they won't have registered to vote in time. Make sure that everyone has joined the DAO before making your proposal. 9 | {% endhint %} 10 | 11 | ## Crafting your proposal 12 | 13 | Since you were the first one here, it's only fair that you suggest what everyone read next. Let's create a proposal suggesting the group read Murray Bookchin's _The Next Revolution: Popular Assemblies and the Promise of Direct Democracy_. 14 | 15 | To begin, starting from your DAO's page, navigate to **Proposals > New Proposal**. 16 | 17 | ![Create proposal button](../../.gitbook/assets/create-proposal-button.png) 18 | 19 | Then, fill in the proposal's name and description. 20 | 21 | ![Proposal creation form](../../.gitbook/assets/create-proposal-form.png) 22 | 23 | {% hint style="info" %} 24 | **Actions?** 25 | 26 | You'll notice the `Actions` label there. [Proposal actions](../../dao-governance/proposals/what.md#actions) allow you to add rich functionality to proposals: software instructions that execute on the blockchain when a proposal is passed and executed. 27 | 28 | The proposal we are creating is a social agreement, so we don't need to run any code. 29 | {% endhint %} 30 | 31 | ## Ship it! 32 | 33 | Now that we're ready, go ahead and press **Publish**. Your wallet will prompt you to approve the transaction. 34 | 35 | Once you approve it, you'll see that your proposal is live! 36 | 37 | ![Created proposal](../../.gitbook/assets/create-proposal-done.png) 38 | 39 | Now that we've made a proposal, let's [vote on it](../../introduction/quickstart/voting.md). 40 | -------------------------------------------------------------------------------- /docs/dao-management/authz/revoke.md: -------------------------------------------------------------------------------- 1 | # Revoke Authorization 2 | 3 | You can revoke any authorized priveleges via a DAO governance proposal. 4 | 5 | ## 1. Create Proposal 6 | 7 | a. From your DAO page, example circled in green, click the Proposal tab, indicated by the yellow arrow. 8 | 9 |
10 | 11 | b. Create a new proposal by clicking the +Proposal button. 12 | 13 | c. Give your proposal a title and description. 14 | 15 |
16 | 17 | ## 2. Add Actions 18 | 19 | a. Scroll down to the Action section of the Create proposal page. Select Authz Grant / Revoke from the Authorizations tab. 20 | 21 |
22 | 23 | b. Select the Revoke authorization tab, indicated by a red arrow in the image below. 24 | 25 |
26 | 27 | c. Under Grantee address, paste an Osmosis address or search for an account or DAO already on DAO DAO. This will be the party having Authz Exec privileges revoked. 28 | 29 | {% hint style="info" %} 30 | In this example, the DAO is revoking authrizations to stake, unstake, redelegate and vote. They are also granting these same authorizations to an individual account in the same proposal. This means the proposal has a total of eight actions, indicated with the green circle in the image above. 31 | {% endhint %} 32 | 33 | d. At the bottom of the screen will be an option to publish your proposal. Once you have reviewed your changes, publish your proposal to start the vote! 34 | 35 | ## 3. Vote 36 | 37 | a. Once the proposal is live, you and other DAO members can vote. [Learn more about voting here!](../../dao-governance/proposals/how-to-vote-on-a-proposal.md) 38 | 39 | b. If the DAO membership votes in favor of the proposal, all of the change will happen automatically at the close of the voting period. 40 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/voting.md: -------------------------------------------------------------------------------- 1 | # Voting 2 | 3 | Now that everyone has joined the DAO and a [proposal has been made](../../introduction/quickstart/create-a-proposal.md), all current members of the DAO can vote on it! 4 | 5 | ![Proposal vote](../../.gitbook/assets/proposal-vote.png) 6 | 7 | ### Vote yes! 8 | 9 | Go ahead and vote _yes_ on your new proposal and approve the transaction in your wallet. Once your fellow DAO members vote as well, the proposal will pass or fail depending on what everyone thinks of the book! 10 | 11 | ![Proposal passed](../../.gitbook/assets/proposal-vote-done.png) 12 | 13 | Since the proposal passed, you will see a button that says `Execute`. A few things happen when a proposal is executed: 14 | 15 | - Any software instructions (i.e. Actions) within the proposal are executed on the blockchain, taking immediate effect. 16 | - If a proposal deposit was required to submit the proposal, and the DAO is configured to return proposal deposits on passed proposals, the proposal deposit will be refunded to the proposer. 17 | 18 | Since this DAO has no proposal deposit, and this proposal contains no actions, executing does nothing but change the status of the proposal to `Executed`. However, it is a good habit to execute proposals since it signifies that the proposal process has completed, and it will sometimes be necessary. 19 | 20 | {% hint style="info" %} 21 | **Revoting and early completion**\ 22 | You can configure a DAO to allow revoting on proposals, which means that a voter can change their vote all the way up to the end of the voting period. If revoting is enabled (which can be done on creation or afterwards with the `Update Voting Config` action), the proposal will _not_ complete early since the outcome is not yet determined. 23 | 24 | By default, revoting is disabled, which means proposals will pass or fail the moment enough voters have voted to guarantee a specific outcome. At this point, the proposal will be executable (when passed) or closeable (when failed). **Voters who did not get the chance to vote before the proposal outcome was determined may still vote until the end of the voting period to ensure that all members can express their preferences.** 25 | {% endhint %} 26 | -------------------------------------------------------------------------------- /docs/dao-management/update-info.md: -------------------------------------------------------------------------------- 1 | # Update appearance 2 | 3 | Once your DAO has been created, any changes to its image, name, or description will need to be done through a proposal and vote. 4 | 5 | Check out our YouTube channel for video guides for changing DAO [image](https://youtu.be/TiE0-fQaUVg), [name](https://youtu.be/LJbzUymmVmI), or [description](https://youtu.be/hfuaIGqYBJA) 6 | 7 | ## 1. Create Proposal 8 | 9 | a. From your DAO page, example circled in green, click the Proposal tab, indicated by the yellow arrow. 10 | 11 |
12 | 13 | b. Create a new proposal by clicking the +Proposal button. 14 | 15 | c. Give your proposal a title and description. 16 | 17 |
18 | 19 | {% hint style="info" %} 20 | Voting parameters, shown at the bottom of the above photo, are set at DAO creation and would need a separate proposal to be changed. 21 | {% endhint %} 22 | 23 | d. From the Action Library, select the Appearance tab and click on Update Info. 24 | 25 |
26 | 27 | e. This will populate the below tab, where you can select/upload a new image to use for your DAO, change your DAO name, or description. 28 | 29 |
30 | 31 | f. At the bottom of the screen will be an option to publish your proposal. Once you have reviewed your changes, publish your proposal to start the vote! 32 | 33 |
34 | 35 | ## 2. Vote 36 | 37 | a. Once the proposal is live, you and other DAO members can vote. If the majority of votes have been cast and the outcome of the vote is decided, the vote can be ended early via the execute button found on the proposal's page. 38 | 39 |
40 | 41 | b. If the DAO membership votes in favor of the appearance change, the change will happen automatically at the close of the voting period. 42 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/what.md: -------------------------------------------------------------------------------- 1 | # What are proposals? 2 | 3 | Proposals are how DAOs take action. You can think of proposals as the nervous system of the DAO—members submit and vote on proposals, and if passed, the DAO _does something_. 4 | 5 | ## What can proposals do? 6 | 7 | Proposals can contain actions, which is where things get really interesting. 8 | 9 | ### Actions 10 | 11 | Actions are software instructions that get executed on the blockchain after a proposal is passed. This lets you do things like spend from the DAO's treasury, add or remove members, mint new governance tokens, and more. 12 | 13 | An action could, for example, pay a contributor by transferring money from the DAO's treasury to their wallet. The purpose of the DAO DAO UI is to make it easy to do this by abstracting away the technicalities of the blockchain in an easy-to-use interface. 14 | 15 | {% hint style="info" %} 16 | **Examples** 17 | 18 | A blockchain software instruction can do pretty much anything: 19 | 20 | - Deploy a docker container on [Akash](https://akash.network). 21 | - [Update the configuration](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q/proposals/A7) of a smart contract, such as the DAO itself. 22 | - Pay a [RPC node provider](https://daodao.zone/dao/juno1gpwekludv6vu8pkpnp2hwwf7f84a7mcvgm9t2cvp92hvpxk07kdq8z4xj2/proposals/A7). 23 | 24 | Truly anything you can do on a blockchain is supported by DAO DAO DAOs, with the added benefits of sophisticated governance processes. 25 | {% endhint %} 26 | 27 | ## Voting on proposals 28 | 29 | When you create a proposal, the voting distribution of members at the time of proposal creation is snapshotted and used for the proposal. This means that if you were not a member when a proposal was created, you will not be able to vote on it. 30 | 31 | This security measure prevents an attacker from purchasing a DAO's governance token if it's listed on an exchange, manipulating a vote, and then selling the tokens immediately afterward. Essentially, it ensures that a DAO member knows _to whom_ they are making a proposal: the people who have voting power at the moment the proposal goes live. 32 | 33 | ## How do I create a proposal? 34 | 35 | Check out the [How to create a proposal](how-to-create-a-proposal.md) guide to get started. 36 | -------------------------------------------------------------------------------- /docs/dao-management/authz/grant.md: -------------------------------------------------------------------------------- 1 | # Grant Authorization 2 | 3 | You can grant any account, like a wallet, another DAO, or SubDAO, authorization to perform a number of actions on behalf of the DAO. While this is a very powerful feature, it is worth understanding the authz module's [critical limitation](limitation.md) before dreaming about all of the authorization flows you want to create. In time, we hope this is resolved by the maintainers of the SDK. 4 | 5 | ## 1. Create Proposal 6 | 7 | a. From your DAO page, example circled in green, click the Proposal tab, indicated by the yellow arrow. 8 | 9 |
10 | 11 | b. Create a new proposal by clicking the +Proposal button. 12 | 13 | c. Give your proposal a title and description. 14 | 15 |
16 | 17 | ## 2. Add Actions 18 | 19 | a. Scroll down to the Action section of the Create proposal page. Select Authz Grant / Revoke from the Authorizations tab. 20 | 21 |
22 | 23 | b. Since the proposal in this example seeks to give a SubDAO authorization to stake, unstake, redelegate and vote on behalf of the DAO, four sepearate actions will need to be added to the proposal. 24 | 25 | c. Under Grantee address, paste an Osmosis address or search for an account or DAO already on DAO DAO. This will be the party granted Authz Exec privileges. 26 | 27 | d. In this example the Authorization type is "Generic" and the Message types are "Stake," "Unstake," "Redelegate," and "Vote." 28 | 29 |
30 | 31 | e. At the bottom of the screen will be an option to publish your proposal. Once you have reviewed your changes, publish your proposal to start the vote! 32 | 33 | ## 3. Vote 34 | 35 | a. Once the proposal is live, you and other DAO members can vote. [Learn more about voting here!](../../dao-governance/proposals/how-to-vote-on-a-proposal.md) 36 | 37 | b. If the DAO membership votes in favor of granting authz exec priveleges, the change will happen automatically once the proposal has been executed. 38 | -------------------------------------------------------------------------------- /docs/dao-governance/notifications/telegram.md: -------------------------------------------------------------------------------- 1 | # Telegram Notifications 2 | 3 | Setting up Telegram notifications takes 60 seconds. 4 | 5 | 1. Start by navigating to https://t.me/dao\_dao\_notifier\_bot and tapping the`Start` button at the bottom. 6 | 7 | \ 8 | On Mobile: 9 | 10 |
Telegram Mobile
11 | 12 | On Desktop: 13 | 14 | ![Telegram Desktop](../../.gitbook/assets/tg-start-desktop.png) 15 | 2. Once you tap the `Start` button, you should see instructions for tracking a DAO. 16 | 17 | \ 18 | On Mobile: 19 | 20 | ![Telegram Mobile](../../.gitbook/assets/tg-started-mobile.jpg) 21 | 22 | On Desktop: 23 | 24 | ![Telegram Desktop](../../.gitbook/assets/tg-started-desktop.png) 25 | 3. If you'd like to track DAOs with other people, add the bot to a group chat by tapping its name at the top of the screen and then tapping the `Add to Group or Channel` button at the bottom. When adding the bot to a group, it may ask if you want to make it an admin. You do _**NOT**_ need to do this. Adding it as a regular member is sufficient. Also, it runs in privacy mode, so it can't read any of your messages. If you just want private notifications, skip this step. 26 | 27 | \ 28 | On Mobile: 29 | 30 | ![Telegram Mobile](../../.gitbook/assets/tg-add-group-mobile.jpg) 31 | 32 | On Desktop: 33 | 34 | ![Telegram Desktop](../../.gitbook/assets/tg-add-group-desktop.png) 35 | 4. Once the bot is in the chat where you want to receive notifications, just send the command shown in the instructions to start tracking a DAO. You can also paste the entire DAO URL from your browser instead of typing the address manually. 36 | 37 | ``` 38 | /add@dao_dao_notifier_bot DAO_ADDRESS 39 | ``` 40 | 41 | \ 42 | On Mobile: 43 | 44 | ![Telegram Mobile](../../.gitbook/assets/tg-add-mobile.jpg) 45 | 46 | On Desktop: 47 | 48 | ![Telegram Desktop](../../.gitbook/assets/tg-add-desktop.png) 49 | 5. Now you're done! When new proposals are created, the bot will message you right away. If you added the bot to a group, everyone in the group will start receiving notifications. If you added the bot to a private chat, you'll be the only one receiving notifications. You can track additional DAOs by sending the same command from any chat that the bot is in. 50 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/tokens-and-nfts.md: -------------------------------------------------------------------------------- 1 | # Displaying tokens and NFTs 2 | 3 | In DAOs, some tokens are automatically displayed in the DAO's treasury, while others are not. 4 | 5 | ### Automatically displayed tokens 6 | 7 | - The native gas/fee token of the chain and any cross-chain accounts the DAO controls. 8 | - Tokens created via token factory (and thus live in the native bank module of the chain). 9 | - Tokens transferred over IBC from another chain. 10 | 11 | ### Manually added tokens 12 | 13 | - [CW20 (smart contract)](https://github.com/CosmWasm/cw-plus/blob/main/packages/cw20/README.md) tokens 14 | - [CW721 (smart contract)](https://github.com/public-awesome/cw-nfts/blob/main/packages/cw721/README.md) NFTs 15 | 16 | CW20 tokens were the first dynamic tokens supported in the Cosmos, before the [x/tokenfactory](https://docs.osmosis.zone/osmosis-core/modules/tokenfactory) SDK module was built to enable creating custom tokens without smart contracts. 17 | 18 | CW721 NFTs are the base for pretty much all smart-contract-based NFTs in the Cosmos ecosystem. 19 | 20 | Since both of these token standards are smart contracts that any protocol or platform can deploy, there is no centralized index of their balances. DAOs must register them manually so the UI knows they exist. 21 | 22 | ## How to display in the treasury 23 | 24 | You can display CW20 tokens and CW721 NFTs in the DAO's treasury with a simple action in a proposal. 25 | 26 | Find the `Manage Treasury Tokens` action in the `Treasury` category of the action library, and the `Manage Treasury NFTs` action in the `NFTs` category. 27 | 28 | ![Manage Treasury Tokens action](../../.gitbook/assets/treasury-manage-tokens.png) 29 | 30 | ![Manage Treasury NFTs action](../../.gitbook/assets/treasury-manage-nfts.png) 31 | 32 | Simply choose the chain (if the token/NFT lives in one of the DAO's [cross-chain accounts](cross-chain.md)) and enter the contract address of the token/NFT you want displayed, and the treasury will know to display it once you pass and execute the proposal. 33 | 34 | ### Troubleshooting 35 | 36 | This display feature is necessary due to the nature of CW20 and CW721 tokens, while also serving to reduce spam. Regardless of whether a token or NFT is displayed in the treasury, if it was transferred to the DAO's address, the tokens are owned by the DAO. 37 | 38 | If you sent a token/NFT to the treasury and registered it for display, but it's not showing up, it may be an indexer or other issue. Contact us if you've successfully registered a token/NFT for display according to the guide above and still can't see it. 39 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to DAO DAO 2 | 3 | [DAO DAO](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q) is a DAO that builds DAOs. We build powerful, [open source](https://github.com/DA0-DA0), DAO tooling. 4 | 5 | ## Why DAOs? 6 | 7 | Decentralized Autonomous Organizations (DAOs) are programmable organizations with rules and procedures governed by its members. DAOs can help manage everything from an [Internet community of dogs](https://daodao.zone/dao/juno1czh5dy2kxwwt5hlw6rr2q25clj96sheftsdccswg9qe34m3wzgdswmw8ju) to the [development of entire blockchains](https://daodao.zone/dao/neutron1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrstdxvff/proposals). 8 | 9 | Because DAO DAO DAOs operate on a blockchain, they are transparent by default. This means that votes, the voting power of members, and actions a DAO takes are all publicly auditable. This can help provide trust that DAO members are being good stewards of their communities. 10 | 11 | The programmability of DAOs makes them extremely flexible. DAO DAO is designed as a set of [composable components](https://github.com/DA0-DA0/dao-contracts/wiki/DAO-DAO-Contracts-Design), essentially that can snap together like Lego blocks. Communities can pick and choose among pre-built governance components to create a system that works well for them, or they can program their own. 12 | 13 | Any kind of institution can be represented as a DAO. You can launch a business or an investment group, found a school, manage an artist collective, or create a popular assembly for your local community. Our hope is to build a platform where the challenges of community formation and maintenance are social, not bureaucratic nor costly. 14 | 15 | ## Why DAO DAO? 16 | 17 | DAO DAO helps you build and operate DAOs by providing a visual interface to easily interact with the underlying smart contracts that run on the blockchain. Ideally, DAO DAO abstracts away the complexities of blockchains and lets you focus on your community. Usability and accessibility are a priority. Technical and non-technical communities alike have a space here. 18 | 19 | DAO DAO DAOs are [IBC](https://www.coinbase.com/cloud/discover/dev-foundations/ibc-protocol)-enabled, meaning that your DAO can interact with and manage protocols and assets on any IBC-enabled chain, like [Osmosis](https://osmosis.zone), [Stargaze](https://stargaze.zone) and [Juno](https://junonetwork.io). 20 | 21 | ## Where do I begin? 22 | 23 | If you want to get started building a DAO, check out our [Create a DAO](../dao-management/create-a-dao.md) guide. 24 | 25 | If you want to chat with like-minded people experimenting with new governance tools, hop in our [Discord server](https://discord.daodao.zone). 26 | -------------------------------------------------------------------------------- /docs/dao-management/treasury/cross-chain.md: -------------------------------------------------------------------------------- 1 | # Manage cross-chain tokens 2 | 3 | By default, you can manage tokens on the DAO's home chain. You may also want to hold, spend, and stake tokens on other chains. 4 | 5 | The first step is to [set up a cross-chain account](https://youtu.be/D4oiQl1Ne7k) on each chain you want to manage tokens on. 6 | 7 | [Watch a video on managing cross-chain tokens!](https://youtu.be/5LSe48BcTyk) 8 | 9 | ## Setup 10 | 11 | [Create a proposal](../../dao-governance/proposals/how-to-create-a-proposal.md) and add the `Create Cross-Chain Account` action from the `DAO Treasury` category. 12 | 13 | ![Create proposal form](../../.gitbook/assets/single-choice-proposal.png) 14 | 15 | ![DAO Governance category in Add an action modal](../../.gitbook/assets/add-action-modal-dao-governance-category.png) 16 | 17 | ![Create Cross-Chain Account action in DAO Governance category](../../.gitbook/assets/cross-chain-action-dao-governance-category.png) 18 | 19 | ![Create Cross-Chain Account action](../../.gitbook/assets/create-cross-chain-account-action.png) 20 | 21 | Simply select which chain you want to create an account on. You can even add multiple chains at once using the plus button on the right. 22 | 23 | ![Multiple chains](../../.gitbook/assets/create-cross-chain-account-action-multiple.png) 24 | 25 | Once this proposal is passed and executed, the cross-chain accounts will be created. This may take a few minutes as chain relayers have to detect and relay the actions to the other chains. 26 | 27 | ## Sending tokens to a cross-chain account 28 | 29 | Once you have created cross-chain accounts, they will appear in the `Treasury & NFTs` tab of the DAO's page. 30 | 31 | ![Treasury & NFTs tab](../../.gitbook/assets/treasury-nfts-tab.png) 32 | 33 | Click on the address to the right of the chain you want to send tokens to in order to copy it. Just send tokens from your wallet to the corresponding address on the desired chain, and your DAO will receive them. 34 | 35 | ## Spending cross-chain tokens 36 | 37 | Spending cross-chain tokens is as easy as spending on the DAO's home chain. 38 | 39 | Check out the [How to send tokens](send.md) guide to get started. 40 | 41 | When you select the token you want to send, you will see a list of all tokens on all chains the DAO has an account on. 42 | 43 | ![Spend token modal](../../.gitbook/assets/spend-tokens-modal.png) 44 | 45 | ## Staking cross-chain tokens and earning rewards 46 | 47 | Earning cross-chain staking rewards is as easy as staking on the DAO's home chain. 48 | 49 | Check out the [How to stake tokens](staking.md) guide to get started. 50 | 51 | You can change the token you're going to stake in the action. 52 | 53 | ![Staking token picker](../../.gitbook/assets/staking-token-picker.png) 54 | -------------------------------------------------------------------------------- /docs/upgrading/v1/dao.md: -------------------------------------------------------------------------------- 1 | # Upgrading a DAO 2 | 3 | {% hint style="info" %} 4 | There are newer versions available. You must first upgrade to V1, and then follow the newer upgrade instructions to get to the most recent version. 5 | {% endhint %} 6 | 7 | To upgrade a beta DAO to a v1 DAO: 8 | 9 | 1. Create a new proposal. 10 | 2. Press the `Add Component +` button and select the `☯️ Upgrade to V1` template. 11 | 12 | The template will then walk you through the steps to migrate to your new V1 DAO. After you fill out the template, make sure to double check that the new DAO is configured correctly. 13 | 14 | A good way of testing that your new DAO is correct is to make a new proposal in the new one called `Acceptance of V1 DAO`. Then, have members vote on the proposal. If everyone votes and the proposal passes, it's a good sign that your DAO is configured correctly. 15 | 16 | ## Why upgrade 17 | 18 | By upgrading from beta to V1, you'll continue to receive new feature releases from DAO DAO and start using [audited](https://github.com/DA0-DA0/dao-contracts/releases/tag/v1.0.0) smart contracts. 19 | 20 | Beta DAOs and multisigs have been moved to [legacy.daodao.zone](https://legacy.daodao.zone) and no longer receive new feature releases. 21 | 22 | ## Upgrading DAOs when your DAO is not the admin of its token. 23 | 24 | If you created your token somewhere other than DAO DAO and imported it into DAO DAO the default migration template will not work for you. 25 | 26 | This is because your DAO is likely not the admin of its token contract. By default, the migration template will attempt to set the admin and minter of the token contract to the new DAO, your DAO not being the admin makes this not possible. 27 | 28 | To migrate a DAO to a v1 DAO if you are not the admin of the token contract: 29 | 30 | 1. Create a new proposal to migrate the DAO. 31 | 2. Add the "☯️ Upgrade to V1" template. 32 | 3. Follow the instructions to create a new V1 DAO. 33 | 4. Make note of the address of the new DAO and then delete the template. 34 | 5. Add a "🐋 Migrate Contract" template. 35 | - For the address put the address of your DAO's staking contract. 36 | - For the code ID put 430 (this is the ID of the v1 staking contract). 37 | - For the message field put `{"from_beta":{}}`. 38 | 6. Add an "🍄 Update Contract Admin" template. 39 | - For the address put the address of your staking contract. 40 | - For the new admin put the address of your new V1 DAO. 41 | 7. Add an "🌳 Update Staking Config" template. 42 | - For the staking address input the address of your staking contract. 43 | - For the owner put the address of your new V1 DAO. 44 | - Leave the unstaking duration unchanged. 45 | 8. Add an "🎭 Update Config" template. 46 | - In the description field add a link to your new DAO so folks can find it after the migration. 47 | 9. (optional) If you would like to lock the current DAO, add a "🏖 Pause DAO" template that pauses the DAO forever. 48 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/join-a-dao/joining-leaving-member-based-dao.md: -------------------------------------------------------------------------------- 1 | # Joining and leaving a member-based DAO 2 | 3 | As explained in [_What's a DAO?_](../../../introduction/whats-a-dao.md#members-multisig-replacement), member-based DAOs have static membership, meaning the DAO must pass a proposal to add or remove members. Members cannot independently decide to join or leave a member-based DAO. 4 | 5 | You may want to read the [proposal explanation doc](../../../dao-governance/proposals/what.md) to understand how proposals work in DAOs before proceeding. 6 | 7 | ## Joining (adding) 8 | 9 | To add a new member to a member-based DAO, an existing member must submit a proposal to do so. To begin, starting from your DAO's page, navigate to **Proposals > New Proposal**. 10 | 11 | ![Create proposal button](../../../.gitbook/assets/create-proposal-button.png) 12 | 13 | Enter the details of your new proposal, and then click the `Add an action` button. 14 | 15 | ![Add an action button](../../../.gitbook/assets/add-member-add-action.png) 16 | 17 | In the action category selection modal, select the `DAO Governance` category. 18 | 19 | ![DAO Governance category](../../../.gitbook/assets/add-member-action-modal.png) 20 | 21 | Then, choose the `Manage Members` action. 22 | 23 | ![Manage Members action](../../../.gitbook/assets/add-member-manage-members.png) 24 | 25 | From here, you can add new members, update existing members' voting powers, and remove existing members. In this example, we'll just add a new member. 26 | 27 | ![Add Meow](../../../.gitbook/assets/add-member-add-meow.png) 28 | 29 | {% hint style="info" %} 30 | **Voting weight**\ 31 | For Meow's voting weight, we can choose any whole number greater than zero. Since the DAO was created with a single member with a voting weight of 1, we will choose 1 for Meow so that the members have equal voting power. If we instead gave Meow a voting weight of 3, they would have 75% of the DAO's total voting power, and the current member would only have 25%. 32 | {% endhint %} 33 | 34 | All that's left to do is publish, vote on, and then execute the proposal. 35 | 36 | ![Execute proposal](../../../.gitbook/assets/add-member-proposal-execute.png) 37 | 38 | Once passed, executing the proposal will activate the software instructions contained in the proposal, which in this case adds Meow to the DAO. 39 | 40 | Now that it has been executed, Meow is in the DAO! 41 | 42 | ![DAO's members tab with Meow](../../../.gitbook/assets/add-member-done.png) 43 | 44 | ## Leaving (removing) 45 | 46 | To remove a member from a member-based DAO, the process is identical to adding a new member. However, instead of adding an address under the `Members to add/update` heading, we will add an address under the `Members to remove` heading. 47 | 48 | ![Remove Meow](../../../.gitbook/assets/remove-member-action.png) 49 | 50 | Passing and executing this proposal will kick Meow out of the DAO, and they will no longer be able to vote on future proposals. 51 | 52 | {% hint style="info" %} 53 | If a proposal was created when Meow was a member of the DAO, they will still be able to vote on it. Membership changes only take effect for future proposals. 54 | {% endhint %} 55 | -------------------------------------------------------------------------------- /docs/dao-management/authz/execute.md: -------------------------------------------------------------------------------- 1 | # Execute via Authorization 2 | 3 | This guide outlines how to use authorized privileges (via Authz Exec) as an individual account or a DAO/SubDAO. 4 | 5 | ## Individual Account 6 | 7 | ### 1. Initiate Action 8 | 9 | a. From the [home page](https://daodao.zone), select the Actions tab, indicated by the green arrow in the picture below. 10 | 11 |
12 | 13 | b. From the Action Library, select the Authorizations tab and then Authz Exec. 14 | 15 |
16 | 17 | ### 2. Authz Exec 18 | 19 | a. A new window for Authz Exec actions will populate. First paste the Osmosis address for the DAO you which you act on behalf of or search for it by name. 20 | 21 | b. This account was granted privileges to stake, unstake, and restake on behalf of the DAO in [Grant Authz Exec](grant.md), thus it may perform any of these actions autonomously with the DAO's treasury funds. 22 | 23 |
24 | 25 | ### 3. Execute :key: 26 | 27 | a. Below the action library, where publish would be on a traditional proposal, is an Execute button. When you have reviewed the details of your action, click this button to exectue the transaction. If successful, the changes will be made automatically. 28 | 29 | ## DAO/SubDAO 30 | 31 | ### 1. Create Proposal 32 | 33 | a. From your DAO page, example circled in green, click the Proposal tab, indicated by the yellow arrow. 34 | 35 |
36 | 37 | b. Create a new proposal by clicking the +Proposal button. 38 | 39 | c. Give your proposal a title and description. 40 | 41 |
42 | 43 | ### 2. Add Action 44 | 45 | a. From the Action Library, select the Authorizations tab and then Authz Exec. 46 | 47 |
48 | 49 | ### 3. Authz Exec 50 | 51 | a. A new window for Authz Exec actions will populate. First paste the Osmosis address for the DAO you which you act on behalf of or search for it by name. 52 | 53 | b. This account was granted privileges to stake, unstake, and restake on behalf of the DAO, thus it may perform any of these actions autonomously with the DAO's treasury funds. 54 | 55 |
56 | 57 | c. At the bottom of the screen will be an option to publish your proposal. Once you have reviewed your changes, publish your proposal to start the vote! 58 | 59 | ### 4. Vote 60 | 61 | a. Once the proposal is live, you and other DAO members can vote. [Learn more about voting here!](../../dao-governance/proposals/how-to-vote-on-a-proposal.md) 62 | 63 | b. If the DAO membership votes in favor of the proposal, all of the change will happen automatically at the close of the voting period. 64 | -------------------------------------------------------------------------------- /docs/dao-management/manage-members/joining-leaving-token-based-dao.md: -------------------------------------------------------------------------------- 1 | # Joining and leaving a token-based DAO 2 | 3 | The DAO we created in the previous guide was not a token-based DAO. However, you are likely to encounter token-based DAOs soon enough if you are engaging with DAOs, and there are a few things you need to learn before interacting with them. 4 | 5 | ## Joining 6 | 7 | To join a token-based DAO, you must register to vote by staking governance tokens you obtain. Once you register to vote, you can vote on all future proposals. However, you _cannot_ vote on proposals that were created before you registered. This is a safety feature to ensure voting power remains constant once a proposal is created. 8 | 9 | To register to vote, first visit the DAO's home page. 10 | 11 | ![Token-based DAO home page](../../.gitbook/assets/token-based-home.png) 12 | 13 | On here you will see: 14 | 15 | * how many tokens you have staked 16 | * how many tokens you have unstaked 17 | * how many tokens are currently unstaking 18 | * your voting power 19 | 20 | Click the `Stake` or `Manage... stake` button to stake your tokens. 21 | 22 | ![Manage staking modal](../../.gitbook/assets/manage-staking.png) 23 | 24 | By staking your tokens, you are registering those tokens as voting power. Any tokens you do not stake won't count towards your voting power. If you want your votes to matter as much as possible, you'll likely want to stake all of them. 25 | 26 | There are some situations where you may not want to stake all of your tokens. For example: 27 | 28 | 1. Some DAOs require a proposal deposit be paid in order to create a proposal, in an effort to ensure a minimum level of commitment to a proposal. If you plan on making a proposal, you may want to leave some tokens unstaked. 29 | 2. Some DAOs have an unstaking duration, which is the amount of time you must wait after unstaking your tokens before those tokens are available to you. If you are holding tokens in a DAO with a non-zero staking duration, and you think you may want to sell or trade those tokens quickly in the future, you may consider leaving some tokens unstaked. 30 | 31 | ## Leaving 32 | 33 | To leave a token-based DAO, you must unstake all your tokens. 34 | 35 | ![Staked token membership](../../.gitbook/assets/staked-membership.png) 36 | 37 | Click the `Manage your stake` button, and select the `Unstake` tab. On that tab, select the `100%` button to fill in all your tokens, then press `Unstake` in the bottom right. 38 | 39 | ![Manage staking unstake modal](../../.gitbook/assets/manage-staking-unstake-all.png) 40 | 41 | Approve the transaction in your wallet. 42 | 43 | Once doing so, you will have to wait the unstaking duration before the tokens are available to you again. While you are waiting, you will also not be able to vote on proposals. 44 | 45 | ![Unstaking token membership](../../.gitbook/assets/your-membership-unstaking.png) 46 | 47 | ![Unstaking token modal](../../.gitbook/assets/unstaking-modal.png) 48 | 49 | After the unstaking duration, you will need to claim your tokens by clicking on the `Claim your ` button. After approving the transaction in your wallet, the tokens will be available to you. 50 | 51 | ![Unstaked all membership](../../.gitbook/assets/your-membership-nothing-staked.png) 52 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/join-a-dao/joining-leaving-token-based-dao.md: -------------------------------------------------------------------------------- 1 | # Joining and leaving a token-based DAO 2 | 3 | The DAO we created in the previous guide was not a token-based DAO. However, you are likely to encounter token-based DAOs soon enough if you are engaging with DAOs, and there are a few things you need to learn before interacting with them. 4 | 5 | ## Joining 6 | 7 | To join a token-based DAO, you must register to vote by staking governance tokens you obtain. Once you register to vote, you can vote on all future proposals. However, you _cannot_ vote on proposals that were created before you registered. This is a safety feature to ensure voting power remains constant once a proposal is created. 8 | 9 | To register to vote, first visit the DAO's home page. 10 | 11 | ![Token-based DAO home page](../../../.gitbook/assets/token-based-home.png) 12 | 13 | On here you will see: 14 | 15 | * how many tokens you have staked 16 | * how many tokens you have unstaked 17 | * how many tokens are currently unstaking 18 | * your voting power 19 | 20 | Click the `Stake` or `Manage... stake` button to stake your tokens. 21 | 22 | ![Manage staking modal](../../../.gitbook/assets/manage-staking.png) 23 | 24 | By staking your tokens, you are registering those tokens as voting power. Any tokens you do not stake won't count towards your voting power. If you want your votes to matter as much as possible, you'll likely want to stake all of them. 25 | 26 | There are some situations where you may not want to stake all of your tokens. For example: 27 | 28 | 1. Some DAOs require a proposal deposit be paid in order to create a proposal, in an effort to ensure a minimum level of commitment to a proposal. If you plan on making a proposal, you may want to leave some tokens unstaked. 29 | 2. Some DAOs have an unstaking duration, which is the amount of time you must wait after unstaking your tokens before those tokens are available to you. If you are holding tokens in a DAO with a non-zero staking duration, and you think you may want to sell or trade those tokens quickly in the future, you may consider leaving some tokens unstaked. 30 | 31 | ## Leaving 32 | 33 | To leave a token-based DAO, you must unstake all your tokens. 34 | 35 | ![Staked token membership](../../../.gitbook/assets/staked-membership.png) 36 | 37 | Click the `Manage your stake` button, and select the `Unstake` tab. On that tab, select the `100%` button to fill in all your tokens, then press `Unstake` in the bottom right. 38 | 39 | ![Manage staking unstake modal](../../../.gitbook/assets/manage-staking-unstake-all.png) 40 | 41 | Approve the transaction in your wallet. 42 | 43 | Once doing so, you will have to wait the unstaking duration before the tokens are available to you again. While you are waiting, you will also not be able to vote on proposals. 44 | 45 | ![Unstaking token membership](../../../.gitbook/assets/your-membership-unstaking.png) 46 | 47 | ![Unstaking token modal](../../../.gitbook/assets/unstaking-modal.png) 48 | 49 | After the unstaking duration, you will need to claim your tokens by clicking on the `Claim your ` button. After approving the transaction in your wallet, the tokens will be available to you. 50 | 51 | ![Unstaked all membership](../../../.gitbook/assets/your-membership-nothing-staked.png) 52 | -------------------------------------------------------------------------------- /docs/dao-management/manage-members/joining-leaving-member-based-dao.md: -------------------------------------------------------------------------------- 1 | # Joining and leaving a member-based DAO 2 | 3 | As explained in [_What's a DAO?_](../../introduction/whats-a-dao.md#members-multisig-replacement), member-based DAOs have static membership, meaning the DAO must pass a proposal to add or remove members. Members cannot independently decide to join or leave a member-based DAO. 4 | 5 | You may want to read the [proposal explanation doc](../../dao-governance/proposals/what.md) to understand how proposals work in DAOs before proceeding. 6 | 7 | Check out our YouTube for video guides for [adding](https://youtu.be/YjF-4jwUhgI) or [removing](https://youtu.be/25q62ZleOd0) members from a member-based DAO. 8 | 9 | ## Joining (adding) 10 | 11 | To add a new member to a member-based DAO, an existing member must submit a proposal to do so. To begin, starting from your DAO's page, navigate to **Proposals > New Proposal**. 12 | 13 | ![Create proposal button](../../.gitbook/assets/create-proposal-button.png) 14 | 15 | Enter the details of your new proposal, and then click the `Add an action` button. 16 | 17 | ![Add an action button](../../.gitbook/assets/add-member-add-action.png) 18 | 19 | In the action category selection modal, select the `DAO Governance` category. 20 | 21 | ![DAO Governance category](../../.gitbook/assets/add-member-action-modal.png) 22 | 23 | Then, choose the `Manage Members` action. 24 | 25 | ![Manage Members action](../../.gitbook/assets/add-member-manage-members.png) 26 | 27 | From here, you can add new members, update existing members' voting powers, and remove existing members. In this example, we'll just add a new member. 28 | 29 | ![Add Meow](../../.gitbook/assets/add-member-add-meow.png) 30 | 31 | {% hint style="info" %} 32 | **Voting Weight** 33 | 34 | For Meow's voting weight, we can choose any whole number greater than zero. Since the DAO was created with a single member with a voting weight of 1, we will choose 1 for Meow so that the members have equal voting power. If we instead gave Meow a voting weight of 3, they would have 75% of the DAO's total voting power, and the current member would only have 25%. 35 | {% endhint %} 36 | 37 | All that's left to do is publish, vote on, and then execute the proposal. 38 | 39 | ![Execute proposal](../../.gitbook/assets/add-member-proposal-execute.png) 40 | 41 | Once passed, executing the proposal will activate the software instructions contained in the proposal, which in this case adds Meow to the DAO. 42 | 43 | Now that it has been executed, Meow is in the DAO! 44 | 45 | ![DAO's members tab with Meow](../../.gitbook/assets/add-member-done.png) 46 | 47 | ## Leaving (removing) 48 | 49 | To remove a member from a member-based DAO, the process is identical to adding a new member. However, instead of adding an address under the `Members to add/update` heading, we will add an address under the `Members to remove` heading. 50 | 51 | ![Remove Meow](../../.gitbook/assets/remove-member-action.png) 52 | 53 | Passing and executing this proposal will kick Meow out of the DAO, and they will no longer be able to vote on future proposals. 54 | 55 | {% hint style="info" %} 56 | If a proposal was created when Meow was a member of the DAO, they will still be able to vote on it. Membership changes only take effect for future proposals. 57 | {% endhint %} 58 | -------------------------------------------------------------------------------- /docs/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | * [Welcome to DAO DAO](README.md) 4 | 5 | ## Introduction 6 | 7 | * [Quickstart](introduction/quickstart/README.md) 8 | * [Create your first DAO](introduction/quickstart/create-a-dao.md) 9 | * [Join a DAO](introduction/quickstart/join-a-dao/README.md) 10 | * [Joining and leaving a member-based DAO](introduction/quickstart/join-a-dao/joining-leaving-member-based-dao.md) 11 | * [Joining and leaving a token-based DAO](introduction/quickstart/join-a-dao/joining-leaving-token-based-dao.md) 12 | * [Create your first proposal](introduction/quickstart/create-a-proposal.md) 13 | * [Voting](introduction/quickstart/voting.md) 14 | * [Congratulations!](introduction/quickstart/congratulations.md) 15 | * [What's a DAO?](introduction/whats-a-dao.md) 16 | * [What's a blockchain?](introduction/whats-a-blockchain.md) 17 | * [Technical breakdown](introduction/technical-breakdown.md) 18 | * [Contribute to DAO DAO!](introduction/how-to-contribute.md) 19 | 20 | ## DAO Management 21 | 22 | * [Create a DAO](dao-management/create-a-dao.md) 23 | * [Update appearance](dao-management/update-info.md) 24 | * [SubDAOs](dao-management/subdaos/README.md) 25 | * [What are SubDAOs?](dao-management/subdaos/what.md) 26 | * [How to create a SubDAO](dao-management/subdaos/how-to-create.md) 27 | * [How to act on behalf of a SubDAO](dao-management/subdaos/act-on-behalf-of-subdao.md) 28 | * [Treasury](dao-management/treasury/README.md) 29 | * [Send tokens](dao-management/treasury/send.md) 30 | * [Manage cross-chain tokens](dao-management/treasury/cross-chain.md) 31 | * [Manage staking](dao-management/treasury/staking.md) 32 | * [Displaying tokens and NFTs](dao-management/treasury/tokens-and-nfts.md) 33 | * [Enable vesting payments](dao-management/treasury/vesting.md) 34 | * [Manage Members](dao-management/manage-members/README.md) 35 | * [Joining and leaving a member-based DAO](dao-management/manage-members/joining-leaving-member-based-dao.md) 36 | * [Joining and leaving a token-based DAO](dao-management/manage-members/joining-leaving-token-based-dao.md) 37 | * [Authz](dao-management/authz/README.md) 38 | * [Grant Authorization](dao-management/authz/grant.md) 39 | * [Revoke Authorization](dao-management/authz/revoke.md) 40 | * [Execute via Authorization](dao-management/authz/execute.md) 41 | * [Limitation](dao-management/authz/limitation.md) 42 | * [Cross-chain support](dao-management/cross-chain.md) 43 | 44 | ## DAO Governance 45 | 46 | * [Configuration](dao-governance/configuration/README.md) 47 | * [Voting](dao-governance/configuration/voting.md) 48 | * [Proposal submission](dao-governance/configuration/proposal-submission.md) 49 | * [Staking](dao-governance/configuration/staking.md) 50 | * [Proposals](dao-governance/proposals/README.md) 51 | * [What are proposals?](dao-governance/proposals/what.md) 52 | * [Types of proposals](dao-governance/proposals/types.md) 53 | * [How to create a proposal](dao-governance/proposals/how-to-create-a-proposal.md) 54 | * [How to vote on a proposal](dao-governance/proposals/how-to-vote-on-a-proposal.md) 55 | * [How to add a proposal module](dao-governance/proposals/how-to-add-a-proposal-module.md) 56 | * [How to change a pre-propose module](dao-governance/proposals/how-to-change-a-pre-propose-module.md) 57 | * [How to bulk import actions](dao-governance/proposals/bulk-import-actions.md) 58 | * [How to create an autofill proposal link](dao-governance/proposals/autofill-proposal-link.md) 59 | * [Manage Vetoable DAOs](dao-governance/manage-vetoable-daos.md) 60 | * [Migration](dao-governance/migration.md) 61 | * [Notifications](dao-governance/notifications/README.md) 62 | * [Telegram Notifications](dao-governance/notifications/telegram.md) 63 | -------------------------------------------------------------------------------- /docs/dao-management/authz/limitation.md: -------------------------------------------------------------------------------- 1 | # Limitation 2 | 3 | While powerful conceptually, the [Authz SDK module](https://docs.cosmos.network/main/build/modules/authz) suffers from one primary drawback that unfortunately makes it quite limited in application and in some cases, often experienced by DAOs, entirely useless. The issue has been raised [here](https://github.com/cosmos/cosmos-sdk/issues/18567), but the maintainers at the time were unable to grasp the importance of fixing it enough to prioritize it, and it remains unfixed. 4 | 5 | ## Problem 6 | 7 | The problem lies in the fact that only one authorization can exist for the triple `(granter, grantee, type)`, where `type` is the type URL of an authorization. Different SDK modules define their own authorization types: the authz module itself defines one ([`GenericAuthorization`](https://docs.cosmos.network/main/build/modules/authz#genericauthorization)), the wasm module defines three (`StoreCodeAuthorization`,`ContractMigrationAuthorization`, and `ContractExecutionAuthorization`), etc. 8 | 9 | `GenericAuthorization` grants a grantee unrestricted permission to execute a specific message on behalf of the granter (e.g. stake tokens, undelegate tokens, upload contracts, etc.). While this is very powerful, the granter can only choose one message to allow a grantee to perform, preventing more complex situations where an account (or DAO) wishes to allow another account to act on behalf of them in many ways. 10 | 11 | The three authorizations in the wasm module mentioned before attempt to workaround this issue with an internal pattern where a single`ContractExecutionAuthorization` can contain a list of one or more`ContractGrant`s, so a granter can effectively authorize a specific grantee to perform many executions on different contracts. This is certainly an improvement, but it yields two more problems: 12 | 13 | 1. The less serious one is that since the list of `ContractGrant`s in the authorization is non-paginated, there is some limit to the number that can be created—though it is probably pretty large. 14 | 2. The more serious issue is that a developer must include all existing grants when adding a new grant. This means that if an app wants to create a contract authorization between a granter and grantee, it must first query for existing grants between them to prevent overriding another app's grants or even other grants that exist within the same app. This is inefficient, and while technically possible, developers are not always that careful, nor should they be expected to be; a developer's ability and incentive to discover that they are breaking another app and resolve the issue is probably quite low, and an app should not have to rely on other apps not accidentally breaking their app. Taking it a step further, proposals are created separately from when they are executed. If a proposal must include all existing grants, but the grants change in the middle of its voting period, executing that proposal will now override any changes that were made after it was published. Ideally, proposals operate incrementally: they should be able to insert a specific grant or delete an existing grant without needing to know about the rest of them. 15 | 16 | Clearly, there is recognition that authz should function more as a mutable list of many authorizations, and since each module defines its own authorization types, this is possible to an extent. But for it to be maximally flexible and future-proof, this incremental multi-authorization functionality needs to be implemented at the top, within the authz module, not individually by modules in their authorization types. It would be a nightmare for each module to come up with its own system for supporting simultaneous authorization types, which is what's already happening. 17 | -------------------------------------------------------------------------------- /docs/introduction/whats-a-blockchain.md: -------------------------------------------------------------------------------- 1 | # What's a blockchain? 2 | 3 | A blockchain is a database made of _blocks_ of data, strung together to form a _chain_. Quite literally, a blockchain is a chain of blocks. 4 | 5 | New data comes in piece by piece in the form of transactions. Each transaction is added to a block, and each block is chained to the previous block, creating a chronological ordering of events (or transactions). The canonical state of the blockchain can be derived by replaying each block in order from the beginning. 6 | 7 | While blockchains can store any type of data, they are most commonly used to produce a ledger: an append-only list of transactions. For example, Bitcoin's blockchain stores all transactions that send tokens from one account (i.e. wallet) to another. The balance of each account can be verified by looking at all the transactions that involve that account, adding and subtracting accordingly. 8 | 9 | Blockchains use cryptography and distributed computing algorithms to provide immutability, meaning that data entered cannot be changed after the fact. For Bitcoin, this means that transactions are permanently recorded and viewable by anyone. 10 | 11 | ## What's the interchain? 12 | 13 | The interchain is a term used to describe interoperability between separate, self-sovereign blockchains. Interchain blockchains take advantage of protocols, like [IBC](https://www.coinbase.com/cloud/discover/dev-foundations/ibc-protocol), to send tokens between each other. They can also pass any other data, but tokens are a good example. 14 | 15 | ### What's a self-sovereign blockchain? 16 | 17 | [Layer 2](https://ethereum.org/en/layer-2) blockchains are built on top of layer 1 blockchains, like Ethereum. If a blockchain depends on another blockchain to exist, which is the case for most layer 2 blockchains on Ethereum, it is _not_ self-sovereign. 18 | 19 | The [Cosmos ecosystem](https://cosmos.network) is comprised of many self-sovereign (i.e. layer 1) blockchains that utilize the [IBC](https://www.coinbase.com/cloud/discover/dev-foundations/ibc-protocol) protocol, allowing them to interact and participate in an interchain ecosystem, much like the Internet. 20 | 21 | While layer 2 blockchains can interact with their base layer, they are not self-sovereign, because they cannot exist without it. Self-sovereign blockchains are not dependent on any other blockchain. 22 | 23 | ### How do you send tokens between blockchains? 24 | 25 | Short answer: the **inter-blockchain communication (IBC)** protocol. 26 | 27 | Before IBC, each blockchain was siloed. There was no way to send a token from one self-sovereign blockchain to another. IBC allows chains to share data with one another, including tokens. 28 | 29 | You can dive deeper into IBC from [its website](https://www.ibcprotocol.dev). 30 | 31 | {% hint style="info" %} 32 | Since DAO DAO is IBC-native, your DAO's governance tokens can be shared across any chain that supports IBC. Want your governance token to be tradeable on [Osmosis](https://osmosis.zone)? DAO DAO can help with that! 33 | {% endhint %} 34 | 35 | #### How does IBC work? 36 | 37 | Say Alice wants to send 10 ATOM from her chain to Bob's chain: 38 | 39 | 1. Bob and Alice each run a light client of the other, tracking headers, but not replicating the chain's full state. 40 | 2. Alice bonds 10 ATOM on Alice's chain. 41 | 3. Alice relays a proof to Bob that she has bonded 10 ATOM. 42 | 4. Bob verifies the proof. If valid, Bob creates 10 ATOM "vouchers" on his chain. 43 | 44 | The ATOM on Bob's chain is not real ATOM. They represent Alice's ATOM, and a proof that those ATOMs are frozen. But Bob can "redeem" her vouchers for ATOM anytime. So they're as good as ATOM! 45 | 46 | {% hint style="info" %} 47 | Want to learn more about IBC? Check out the [Cosmos docs](https://v1.cosmos.network/intro#designing-the-internet-of-blockchains). 48 | {% endhint %} 49 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Welcome to the DAO DAO contributing guide 2 | 3 | Thank you for investing your time in contributing to our project! 4 | 5 | Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. 6 | 7 | All contributions will fall under our [our open-source license agreement](./LICENSE.md) 8 | 9 | In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. 10 | 11 | ## New contributor guide 12 | 13 | To get an overview of the project, read the [README](README.md). Here are some resources to help you get started with open source contributions: 14 | 15 | - [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github) 16 | - [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git) 17 | - [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow) 18 | - [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests) 19 | 20 | ### Issues 21 | 22 | #### Create a new issue 23 | 24 | If you spot a problem, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/DA0-DA0/docs/issues/new/choose). 25 | 26 | #### Solve an issue 27 | 28 | Scan through our [existing issues](https://github.com/DA0-DA0/docs/issues) to find one that interests you. You can narrow down the search using `labels` as filters. See [Labels](/contributing/how-to-use-labels.md) for more information. As a general rule, we don’t assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. 29 | 30 | ### Make Changes 31 | 32 | #### Make changes in the UI 33 | 34 | 1. [Install Git LFS](https://docs.github.com/en/github/managing-large-files/versioning-large-files/installing-git-large-file-storage). 35 | 36 | 2. Fork the repository. 37 | 38 | 3. Create a working branch and start with your changes! 39 | 40 | ### Commit your update 41 | 42 | Commit the changes once you are happy with them. See [Atom's contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md#git-commit-messages) to know how to use emoji for commit messages. 43 | 44 | ### Pull Request 45 | 46 | When you're finished with the changes, create a pull request, also known as a PR. 47 | 48 | - Don't forget to [link the PR to an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are solving one. 49 | Once you submit your PR, a team member will review your proposal. We may ask questions or request for additional information. 50 | - We may ask for changes to be made before a PR can be merged, either using [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request) or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch. 51 | - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). 52 | - If you run into any merge issues, checkout this [git tutorial](https://lab.github.com/githubtraining/managing-merge-conflicts) to help you resolve merge conflicts and other issues. 53 | 54 | ### Your PR is merged! 55 | 56 | Congratulations :tada::tada: DAO DAO thanks you :sparkles:. 57 | 58 | Once your PR is merged, your contributions will be publicly visible. 59 | -------------------------------------------------------------------------------- /docs/dao-governance/configuration/voting.md: -------------------------------------------------------------------------------- 1 | # Voting 2 | 3 | A DAO's voting configuration determines the rules of the voting process. Things like the passing threshold and voting duration. 4 | 5 | ## How to update the voting configuration 6 | 7 | To change the voting configuration of a DAO, you must submit a [governance proposal](../proposals/what.md) containing the `Update Voting Config` action from the `DAO Governance` category. 8 | 9 | If you have multiple choice proposals enabled, you will instead see two different actions, one labeled `Update Single Choice Voting Config` and the other `Update Multiple Choice Voting Config`. You may configure each proposal type (single and multiple choice) separately, though they should probably be kept in sync so the voting experience is consistent. 10 | 11 | ## Parameters 12 | 13 | You can update all of these parameters with the action(s) mentioned above at any time. 14 | 15 | ### Passing threshold and quorum 16 | 17 | The _**passing threshold**_ is the `Yes` threshold needed to pass a proposal. It defaults to majority (i.e. any votes above 50%). It sounds simple, but it gets trick very fast because it works differently depending on whether or not the quorum is enabled. 18 | 19 | The _**quorum**_ is the proportion of all voting power that must vote for a proposal to be **passable**. It defaults to 20%. For single choice proposals, quorum can be disabled. 20 | 21 | #### Multiple choice proposals 22 | 23 | Multiple choice proposals use quorum in the same way, but they do not have a passing threshold. Instead, as long as the quorum is met, whichever option received more votes (i.e. the plurality of votes) wins. You cannot disable quorum for multiple choice proposals. 24 | 25 | Read on to understand how passing threshold and quorum affect each other for single choice proposals. 26 | 27 | #### With quorum enabled 28 | 29 | If your DAO has a quorum set, the passing threshold is only calculated among **those who voted**. 30 | 31 | For example, with a quorum of 40% and a passing threshold of 75%, a proposal could pass with only 30% of the total voting power having voted `Yes` if exactly 40% of voters vote. Imagine: 40% of the total voting power votes on the proposal. Quorum is met. Of those who voted, 75% vote `Yes`. The rest of the votes are split between `Abstain` and `No`. `Yes` will have won the vote with a 75% threshold of quorum, even though only 30% of the _total_ voting power voted `Yes`. 32 | 33 | Setting quorum to 0% means that any single voter can pass a proposal by themself. _This is different from disabling quorum._ 34 | 35 | {% hint style="info" %} 36 | Enabling a quorum helps when there is a risk of low participation in a DAO. Large token-based DAOs likely face this risk as membership is fluid and attention is finite. Setting a quorum low enough ensures that the DAO cannot be locked due to lack of sufficient participation. However, setting a quorum too low can lead to proposals passing that do not represent enough member's preferences (if not enough people are paying attention). 37 | {% endhint %} 38 | 39 | #### With quorum disabled 40 | 41 | If your DAO has no quorum set, the passing threshold is calculated among **all possible voters**. This is considered an absolute threshold. 42 | 43 | For example, with a passing threshold of 67%, a proposal will pass if 67% of the total voting power voted `Yes`. 44 | 45 | {% hint style="warning" %} 46 | Threshold and quorum can be very confusing. Please be careful and check your understanding with others before making any changes. 47 | {% endhint %} 48 | 49 | ### Only members execute 50 | 51 | If enabled, only members may execute passed proposals. If disabled, anyone can. This defaults to enabled. 52 | 53 | ### Voting duration 54 | 55 | This is the maximum time proposals remain open for voting. 56 | 57 | ### Allow revoting 58 | 59 | If enabled, votes can be changed before the voting duration ends. This defaults to disabled. 60 | 61 | {% hint style="info" %} 62 | When this is enabled, proposals always remain open for their entire duration. This is because the proposal outcome cannot be determined if votes can be changed. 63 | 64 | When this is disabled, proposals will pass or fail early if sufficient voters cast votes to determine an outcome. 65 | {% endhint %} 66 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/types.md: -------------------------------------------------------------------------------- 1 | # Types of proposals 2 | 3 | DAO DAO supports single choice (`Yes`, `No`, or `Abstain`) and multiple choice (`A`, `B`, `C`, `D`, ..., or `None of the above`) proposals. They work very similarly. 4 | 5 | ## Single choice 6 | 7 | A single choice proposal contains a title, description, and an optional set of actions to execute if passed. The only voting options are `Yes`, `No`, and `Abstain`, and thus a single choice proposal either passes or fails. 8 | 9 | ![Single choice proposal](../../.gitbook/assets/single-choice-proposal.png) 10 | 11 | ### Title 12 | 13 | A title identifies the purpose of a proposal. It should be concise. 14 | 15 | ### Description 16 | 17 | A description explains in detail what a proposal _is_. This may be a [constitution](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q/proposals/A1), legal agreement, justification, or simply a place to document relevant information. Really it can be anything you want. There are no rules, and you should feel free to experiment. 18 | 19 | For example, if you are submitting a proposal to pay someone's salary, you may want to explain why you're paying them or what the relevant terms of work are. 20 | 21 | You can use [Markdown syntax](https://www.markdownguide.org/basic-syntax) for rich formatting. 22 | 23 | ### Actions 24 | 25 | Actions execute when a proposal is passed and executed. These actions let you do things like spend from the DAO's treasury, add or remove members, mint new governance tokens, and more. 26 | 27 | DAO DAO already has many actions that cover almost every possible action you can take on a blockchain. For the most part, you can create proposals without needing to actually write out any software instructions (i.e. transactions) by hand. The DAO DAO UI abstracts away many of those details for you. If you're doing something custom or experimental, you can always use a custom message. If you'd like to create a new action for DAOs to use, [you can do that too](https://github.com/DA0-DA0/dao-dao-ui/wiki/Adding-an-action-to-DAO-DAO)! 28 | 29 | ## Multiple choice 30 | 31 | Multiple choice proposals can contain between 2 and 20 different options, each with their own set of actions, and they always include a `None of the above` option to ensure a proposal cannot force an action to be taken. 32 | 33 | If your DAO does not have multiple choice proposals enabled, ensure the DAO is at least on V2, and then [enable multiple choice proposals with a single choice proposal](types.md#enable-multiple-choice-proposals). 34 | 35 | ### How do they work? 36 | 37 | A multiple choice proposal is just like a single choice proposal, except that instead of a single set of actions, you can create many labeled options, each with their own set of actions. 38 | 39 | Simply choose the `Multiple Choice` proposal type when creating a new proposal. 40 | 41 | ![Multiple choice proposal](../../.gitbook/assets/multiple-choice-proposal.png) 42 | 43 | Each option has different actions associated with it. 44 | 45 | ![Option 1](../../.gitbook/assets/multiple-choice-proposal-option-1.png) 46 | 47 | ![Option 2](../../.gitbook/assets/multiple-choice-proposal-option-2.png) 48 | 49 | When you go to vote, the proposal will show each of the options and a `None of the above` option, instead of just `Yes` and `No`. 50 | 51 | ![Multiple choice proposal](../../.gitbook/assets/multiple-choice-proposal-done.png) 52 | 53 | ### Enable multiple choice proposals 54 | 55 | If you create a new DAO, multiple choice proposals are enabled by default. If you have an existing DAO without multiple choice proposals enabled, you can enable them by [passing a single choice proposal](how-to-create-a-proposal.md) containing the `Enable Multiple Choice Proposals` action in the `DAO Governance` category. 56 | 57 | On the proposal creation page, click the `Add an action` button. 58 | 59 | ![Proposal creation form](../../.gitbook/assets/enable-multiple-choice-add-action.png) 60 | 61 | Click on the `DAO Governance` category, and then choose `Enable Multiple Choice Proposals`. 62 | 63 | ![DAO Governance category](../../.gitbook/assets/action-modal-dao-governance-category.png) 64 | 65 | ![Enable multiple choice action](../../.gitbook/assets/enable-multiple-choice-dao-governance-category.png) 66 | 67 | ![Complete proposal](../../.gitbook/assets/enable-multiple-choice-done.png) 68 | 69 | Once you publish, pass, and execute this proposal, multiple choice proposals will be enabled for the DAO! 70 | -------------------------------------------------------------------------------- /docs/dao-management/create-a-dao.md: -------------------------------------------------------------------------------- 1 | # Create a DAO 2 | 3 | For this tutorial, **we'll make a DAO for your reading group**. This will let folks in your reading group vote on which books to read, organize money for snacks, and so on. 4 | 5 | To keep things cheap, we'll do everything on the Osmosis testnet. Testnet tokens ($OSMO) have no value, and you can get some for free. More on that in a moment. 6 | 7 | ## Install Leap 8 | 9 | To use DAO DAO you'll need a wallet. A wallet is your digital identity on a blockchain. There are many options, but a good choice is the [Leap wallet](https://www.leapwallet.io). You'll need to install that on your phone or browser before getting started. 10 | 11 | Once you've installed Leap, you need to create an account. To do this, open the Leap extension by pressing the puzzle piece icon in the top right of your browser and clicking on the Leap wallet extension. 12 | 13 | ![puzzle icon](../.gitbook/assets/puzzle.png) 14 | 15 | ![Leap wallet extension](../.gitbook/assets/leap-extension.png) 16 | 17 | Once you do that, you'll be directed to a page where you can create a new account. 18 | 19 | ![Leap wallet extension](../.gitbook/assets/welcome-to-leap.png) 20 | 21 | Make sure to store your seed phrase somewhere only you'll be able to find it. This is the recovery key in case you ever need to recover your account, like if you lose your device. 22 | 23 | ## Connect your wallet 24 | 25 | To make your first DAO, head to [testnet.daodao.zone](https://testnet.daodao.zone) and connect your wallet by pressing the `Log in` button. 26 | 27 | Once logged in, you will see your Osmosis testnet address. Click on it to copy and save it for the next step. 28 | 29 | ![Copy wallet address](../.gitbook/assets/wallet-copy-address.png) 30 | 31 | ## Get some testnet $OSMO 32 | 33 | To get some testnet $OSMO, head over to [faucet.testnet.osmosis.zone](https://faucet.testnet.osmosis.zone) and paste your Osmosis address into the form. A bot should send you enough $OSMO to follow this tutorial. 34 | 35 | ![Osmosis faucet](../.gitbook/assets/osmosis-faucet.png) 36 | 37 | {% hint style="info" %} 38 | We'll stick to the testnet for this tutorial, but once you're ready to build a real DAO, you'll need some mainnet tokens on any of the chains supported by DAO DAO. (The [mainnet version of DAO DAO](https://daodao.zone) is deployed on a handful of chains, including Osmosis mainnet). You can get $OSMO on some centralized exchanges, such as [Kraken](https://kraken.com), or on a decentralized exchange if you already have cryptocurrencies in the Cosmos ecosystem, like [Osmosis' DEX](https://osmosis.zone). 39 | {% endhint %} 40 | 41 | ## Create a DAO 42 | 43 | Navigate to the DAO creation page [on testnet](https://testnet.daodao.zone/dao/create?chain=osmo-test-5) (or [on mainnet](https://daodao.zone/dao/create), if that's your thing). 44 | 45 | ## Name and describe your DAO 46 | 47 | Every DAO has a name and a description. These will be displayed in the DAO DAO UI and should communicate the purpose of the DAO to the world. 48 | 49 | Let's create a DAO called `Bookclub`. We'll make our DAO member-based for simplicity. 50 | 51 | ![DAO title and description inputs](../.gitbook/assets/create-dao-title.png) 52 | 53 | {% hint style="info" %} 54 | To learn more about the differences between member- and token-based DAOs, read our documentation [here](../introduction/whats-a-dao.md#voting-power). 55 | {% endhint %} 56 | 57 | ## Add the initial members 58 | 59 | Now we can add the initial members of our DAO. If you're making this DAO with friends, add their Osmosis addresses during this step. Otherwise, you can start the DAO with only yourself and add new members via proposals later. 60 | 61 | ![Member weights](../.gitbook/assets/create-dao-members.png) 62 | 63 | ### Create DAO 64 | 65 | On the next screen, there are many configuration options available that determine how the DAO behaves. You can [read about the available voting configuration options](../dao-governance/configuration/voting.md) if you like, but for now, we'll accept the defaults and create our DAO! 66 | 67 | ![Review page](../.gitbook/assets/create-dao-review.png) 68 | 69 | Go ahead and press `Create DAO` in the bottom right. If you see an error here, make sure you have some $OSMO in your testnet wallet. 70 | 71 | Your wallet will ask you to approve the transaction. Approve it. 72 | 73 | ![Wallet approval prompt](../.gitbook/assets/create-dao-wallet-approve.png) 74 | 75 | 🎉 **Congratulations!** You've made a DAO! 🎉 76 | 77 | ![Created DAO home page](../.gitbook/assets/create-dao-done.png) 78 | -------------------------------------------------------------------------------- /docs/introduction/quickstart/create-a-dao.md: -------------------------------------------------------------------------------- 1 | # Create your first DAO 2 | 3 | For this tutorial, **we'll make a DAO for your reading group**. This will let folks in your reading group vote on which books to read, organize money for snacks, and so on. 4 | 5 | To keep things cheap, we'll do everything on the Osmosis testnet. Testnet tokens ($OSMO) have no value, and you can get some for free. More on that in a moment. 6 | 7 | ## Install Leap 8 | 9 | To use DAO DAO you'll need a wallet. A wallet is your digital identity on a blockchain. There are many options, but a good choice is the [Leap wallet](https://www.leapwallet.io). You'll need to install that on your phone or browser before getting started. 10 | 11 | Once you've installed Leap, you need to create an account. To do this, open the Leap extension by pressing the puzzle piece icon in the top right of your browser and clicking on the Leap wallet extension. 12 | 13 | ![puzzle icon](../../.gitbook/assets/puzzle.png) 14 | 15 | ![Leap wallet extension](../../.gitbook/assets/leap-extension.png) 16 | 17 | Once you do that, you'll be directed to a page where you can create a new account. 18 | 19 | ![Leap wallet extension](../../.gitbook/assets/welcome-to-leap.png) 20 | 21 | Make sure to store your seed phrase somewhere only you'll be able to find it. This is the recovery key in case you ever need to recover your account, like if you lose your device. 22 | 23 | ## Connect your wallet 24 | 25 | To make your first DAO, head to [testnet.daodao.zone](https://testnet.daodao.zone) and connect your wallet by pressing the `Log in` button. 26 | 27 | Once logged in, you will see your Osmosis testnet address. Click on it to copy and save it for the next step. 28 | 29 | ![Copy wallet address](../../.gitbook/assets/wallet-copy-address.png) 30 | 31 | ## Get some testnet $OSMO 32 | 33 | To get some testnet $OSMO, head over to [faucet.testnet.osmosis.zone](https://faucet.testnet.osmosis.zone) and paste your Osmosis address into the form. A bot should send you enough $OSMO to follow this tutorial. 34 | 35 | ![Osmosis faucet](../../.gitbook/assets/osmosis-faucet.png) 36 | 37 | {% hint style="info" %} 38 | We'll stick to the testnet for this tutorial, but once you're ready to build a real DAO, you'll need some mainnet tokens on any of the chains supported by DAO DAO. (The [mainnet version of DAO DAO](https://daodao.zone) is deployed on a handful of chains, including Osmosis mainnet). You can get $OSMO on some centralized exchanges, such as [Kraken](https://kraken.com), or on a decentralized exchange if you already have cryptocurrencies in the Cosmos ecosystem, like [Osmosis' DEX](https://osmosis.zone). 39 | {% endhint %} 40 | 41 | ## Create a DAO 42 | 43 | Navigate to the DAO creation page [on testnet](https://testnet.daodao.zone/dao/create?chain=osmo-test-5) (or [on mainnet](https://daodao.zone/dao/create), if that's your thing). 44 | 45 | ## Name and describe your DAO 46 | 47 | Every DAO has a name and a description. These will be displayed in the DAO DAO UI and should communicate the purpose of the DAO to the world. 48 | 49 | Let's create a DAO called `Bookclub`. We'll make our DAO member-based for simplicity. 50 | 51 | ![DAO title and description inputs](../../.gitbook/assets/create-dao-title.png) 52 | 53 | {% hint style="info" %} 54 | To learn more about the differences between member- and token-based DAOs, read our documentation [here](../../introduction/whats-a-dao.md#voting-power). 55 | {% endhint %} 56 | 57 | ## Add the initial members 58 | 59 | Now we can add the initial members of our DAO. If you're making this DAO with friends, add their Osmosis addresses during this step. Otherwise, you can start the DAO with only yourself and add new members via proposals later. 60 | 61 | ![Member weights](../../.gitbook/assets/create-dao-members.png) 62 | 63 | ### Create DAO 64 | 65 | On the next screen, there are many configuration options available that determine how the DAO behaves. You can [read about the available voting configuration options](../../dao-governance/configuration/voting.md) if you like, but for now, we'll accept the defaults and create our DAO! 66 | 67 | ![Review page](../../.gitbook/assets/create-dao-review.png) 68 | 69 | Go ahead and press `Create DAO` in the bottom right. If you see an error here, make sure you have some $OSMO in your testnet wallet. 70 | 71 | Your wallet will ask you to approve the transaction. Approve it. 72 | 73 | ![Wallet approval prompt](../../.gitbook/assets/create-dao-wallet-approve.png) 74 | 75 | 🎉 **Congratulations!** You've made a DAO! 🎉 76 | 77 | ![Created DAO home page](../../.gitbook/assets/create-dao-done.png) 78 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/bulk-import-actions.md: -------------------------------------------------------------------------------- 1 | # How to bulk import actions 2 | 3 | To bulk import actions, you can use the `Bulk Import Actions` action in the `Advanced` category of the Action Library when creating a proposal. 4 | 5 | ![Bulk import actions](../../.gitbook/assets/bulk-import-actions.png) 6 | 7 | You can use either a JSON or CSV file. CSV files are easier to use but only support some of the actions, whereas JSON files support all actions. 8 | 9 | ### JSON 10 | 11 | The JSON file (with extension `.json`) must be formatted with one top-level `actions` key, which is an array of actions, like this: 12 | 13 | ```json 14 | { 15 | "actions": [ 16 | // INSERT ACTIONS HERE 17 | ] 18 | } 19 | ``` 20 | 21 | And an action looks like this: 22 | 23 | ```json 24 | { 25 | "key": "", 26 | "data": { 27 | // INSERT ACTION DATA HERE 28 | } 29 | } 30 | ``` 31 | 32 | ### CSV 33 | 34 | The CSV file (with extension `.csv`) must have a header with an `ACTION` column and columns for each key in the `data` object of an action. Only actions with flat data objects (i.e. no nested objects or arrays) are supported. 35 | 36 | A CSV that imports a bunch of Spend actions would look like this: 37 | 38 | ``` 39 | ACTION,to,amount,denom 40 | spend,junoAddress,5,ujuno 41 | spend,anotherJunoAddress,5,ujuno 42 | spend,junoAddress,1,ibc/EAC38D55372F38F1AFD68DF7FE9EF762DCF69F26520643CF3F9D292A738D8034 43 | ``` 44 | 45 | ## Action keys 46 | 47 | The action keys can be found in [`@dao-dao/types/actions.ts`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/types/actions.ts) in the `ActionKey` enum. For example: 48 | 49 | * `spend` 50 | * `execute` 51 | * `mintNft` 52 | * `mint` 53 | 54 | The key and data format for an action are defined in its `README.md`, and the actions can be found in the following places: 55 | 56 | * [`@dao-dao/stateful/actions/core/actions`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/actions/core/actions) — common actions to all DAOs. 57 | * [`@dao-dao/stateful/voting-module-adapter/adapters/*/actions`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/voting-module-adapter/adapters) — each voting module adapter may contain specific actions (for example: member-based DAOs include a Manage Members action). 58 | * [`@dao-dao/stateful/proposal-module-adapter/adapters/*/common/actions`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/proposal-module-adapter/adapters) — each proposal module adapter may contain specific actions (for example: single choice proposals have a different Update Proposal Submission Config action from multiple choice proposals). 59 | * [`@dao-dao/stateful/modules/modules/*/actions`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/modules/modules) — each module may contain specific actions (for example: the vesting payments module adds an action to manage vesting payments). 60 | 61 | Here are some common ones: 62 | 63 | ### [`spend`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/actions/core/actions/Spend/README.md) 64 | 65 | For sending money from the treasury. 66 | 67 | ```json 68 | { 69 | "fromChainId": "", 70 | "toChainId": "", 71 | "from": "", 72 | "to": "", 73 | "amount": "", 74 | "denom": "" 75 | } 76 | ``` 77 | 78 | ### [`execute`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/actions/core/actions/Execute/README.md) 79 | 80 | For executing a smart contract. 81 | 82 | ```json 83 | { 84 | "chainId": "", 85 | "sender": "", 86 | "address": "", 87 | "message": "", 88 | "funds": [ 89 | { 90 | "denom": "", 91 | "amount": "", 92 | "decimals": "" 93 | } 94 | ] 95 | } 96 | ``` 97 | 98 | ### [`mintNft`](https://github.com/DA0-DA0/dao-dao-ui/tree/development/packages/stateful/actions/core/actions/MintNft/README.md) 99 | 100 | For minting an NFT in a collection the DAO controls. 101 | 102 | ```json 103 | { 104 | "contractChosen": true, 105 | "collectionAddress": "", 106 | "mintMsg": { 107 | "owner": "", 108 | "token_id": "", 109 | "token_uri": "" 110 | } 111 | } 112 | ``` 113 | 114 | ### [`mint`](https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/stateful/voting-module-adapter/adapters/DaoVotingTokenStaked/actions/DaoVotingTokenStakedMint/README.md) 115 | 116 | For minting governance tokens in a token-based DAO. 117 | 118 | ```json 119 | { 120 | "recipient": "", 121 | "amount": "" 122 | } 123 | ``` 124 | -------------------------------------------------------------------------------- /docs/introduction/whats-a-dao.md: -------------------------------------------------------------------------------- 1 | # What's a DAO? 2 | 3 | Decentralized Autonomous Organizations (DAOs) are collectively owned governance systems whose governing software is cryptographically bound to obey the wishes of its members. 4 | 5 | ## Proposals 6 | 7 | At its simplest, a DAO performs actions through a proposal process. Members submit proposals to the DAO, which are then voted on by all members. These proposals—their content, votes, and outcomes—are written to an immutable, public ledger (e.g. a blockchain). Proposals can contain natural language (e.g. laws, declarations, etc.), or they can contain software instructions (we call these Actions in the DAO DAO UI). Thus DAOs can be used to govern anything from a low-level software protocol to an entire legislature or government. 8 | 9 | When a proposal is passed and executed by the members of the DAO, it becomes canonical. Any actions within the proposal are executed on the blockchain and take immediate effect. For example, once a proposal to pay someone's salary is passed and executed, the salary is paid. 10 | 11 | {% hint style="info" %} 12 | **Real examples** 13 | 14 | [This proposal](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q/proposals/A6) in the DAO DAO DAO has a single action associated with it. Only because it was passed and executed did it take effect. This action was responsible for upgrading the DAO to v2.1 of the smart contracts, which brought new features. Conversely, [this other proposal](https://daodao.zone/dao/juno10h0hc64jv006rr8qy0zhlu4jsxct8qwa0vtaleayh0ujz0zynf2s2r7v8q/proposals/A1) contained no actions and served only to ratify the constitution of the DAO. 15 | {% endhint %} 16 | 17 | The DAO governance process can itself be modified through proposals. For example, voting rules like the voting period length, or what proportion of members need to vote yes to pass, can be modified by governance proposals. 18 | 19 | You can think of DAOs as a big game of [Nomic](https://en.wikipedia.org/wiki/Nomic). For example, [this proposal](https://daodao.zone/dao/juno1czh5dy2kxwwt5hlw6rr2q25clj96sheftsdccswg9qe34m3wzgdswmw8ju/proposals/A9) in Dog Dao updates the DAOs' voting rules to shorten the voting duration and, thus, make proposals complete more quickly. 20 | 21 | ## Voting power 22 | 23 | Because DAOs are programmable, there are infinite mechanisms one could create to determine a member's voting power. We have created three options that cover the most common use cases of today: 24 | 25 | ### Members (multisig replacement) 26 | 27 | We call the simplest form of DAO a member-based DAO. This type of DAO has _static membership_, meaning that the DAO must pass a proposal to change its members. Adding a new member, removing an existing member, and changing the voting powers of existing members all must be voted on by existing members through a proposal. In other words, no individual has the power to change the membership of the DAO. 28 | 29 | This is the DAO structure that replaces the [multisig](https://www.coindesk.com/learn/what-is-a-multisig-wallet). Multisigs can be seen as an early form of a DAO since they solve some of the same issues. Both offer the ability to require multiple people to approve an action, thus allowing a group of people to manage assets and make decisions together. 30 | 31 | ![Membership-based DAO members screenshot](../.gitbook/assets/membership.png) 32 | 33 | ### Tokens 34 | 35 | Some DAOs prefer a more fluid approach to membership, where members can join and leave the DAO at-will. These DAOs use _governance tokens_ to determine voting power such that anyone who owns (and stakes) tokens can submit proposals and vote. These tokens are fungible and may be considered cryptocurrencies if traded on a market. 36 | 37 | Governance tokens are by default freely transferrable, meaning any token holder can send any amount of their tokens to someone else (thereby changing the membership of the DAO). 38 | 39 | {% hint style="info" %} 40 | **Tokens are programmable** 41 | 42 | Through smart contracts on the blockchain, token behavior can be programmed. Tokens, and thus voting power, can slowly unlock (i.e. vest) over time, or be entirely frozen such that members cannot transfer to anyone else. Anything is possible. 43 | {% endhint %} 44 | 45 | In some ways, governance tokens are analogous to shares in a corporation.However, their programmability allows them to become something entirely new. 46 | 47 | {% hint style="info" %} 48 | **Hot take** 49 | 50 | Most DAOs do _not_ need a token. The blockchain ecosystem is token-heavy due to the role cryptocurrencies have played in the blockchain narrative. 51 | 52 | Tokens can bring undesirable attention, speculation, and financial expectations, which may distract from the DAO's purpose. If you do use a token, make sure you know why and who can acquire it. 53 | 54 | We encourage you to think deeply about whether or not the tradeoffs are worth it, especially because you can always start as a member-based DAO and then switch to being token-based later. 55 | {% endhint %} 56 | 57 | In DAO DAO, tokens must be "staked" in order to be counted as voting power, which is analogous to registering to vote. Staked tokens are non-transferrable. When you want to access your tokens again (in order to transfer or use them elsewhere), you must unstake them first. 58 | 59 | Most DAOs have unstaking durations configured, meaning there is a minimum amount of time you must wait after unstaking your tokens before they are available to you. During the unstaking period, the tokens do not count towards your voting power, and you cannot transfer them. This adds a time cost to staking and ensures a greater level of participatory commitment from a DAO's members. 60 | 61 | ![Token-based DAO members screenshot](../.gitbook/assets/tokens.png) 62 | 63 | ### NFTs 64 | 65 | [Non-fungible tokens (NFTs)](https://en.wikipedia.org/wiki/Non-fungible_token) are the non-fungible versions of tokens described above. DAOs that use NFTs to determine voting power operate in the same way as token-based DAOs. 66 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/how-to-change-a-pre-propose-module.md: -------------------------------------------------------------------------------- 1 | # How to change a pre-propose module 2 | 3 | The proposal module system enables DAOs to support any type of execution flow that can be coded in a smart contract, and the pre-propose module is the first step in the proposal process. It determines the process for submitting a proposal: who can propose something, whether or not there's a deposit, etc. 4 | 5 | Proposal modules can either set a pre-propose module, or not use one, which effectively removes all restrictions (meaning anyone can submit a proposal). 6 | 7 | There are two pre-propose module types: 8 | 9 | - base: manages deposits and submission policy 10 | - approval: same as base, plus the ability to set an approver that must approve pending proposals before they open for voting on the proposal module 11 | 12 | Each proposal module has corresponding pre-propose modules (e.g. the `dao-proposal-single` module has `dao-pre-propose-single` and `dao-pre-propose-approval-single`, the `dao-proposal-multiple` module has `dao-pre-propose-multiple` and `dao-pre-propose-approval-multiple`, etc.). 13 | 14 | You can always add, remove, or replace the pre-propose module for a proposal module. 15 | 16 | Adding and disabling proposal modules is not common, and can be dangerous, and thus is not easily supported by the UI, but it is not hard to do with a little bit of time. 17 | 18 | {% hint style="warning" %} 19 | Be careful, the DAO will be bricked and all assets will be locked if the pre-propose module is misconfigured. It is best practice to ensure at least one is functioning before disabling another. Ideally, add an entirely new proposal module with the pre-propose module configured how you want it, test that it works by passing and executing a proposal, and then disable the old one (instead of trying to change the pre-propose module on your only working proposal module). 20 | {% endhint %} 21 | 22 | ## Guide 23 | 24 | First you need the address of the proposal module and the code ID of the pre-propose module. You can find all uploaded DAO DAO code IDs here: [https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/utils/constants/codeIds.json](https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/utils/constants/codeIds.json) 25 | 26 | The following guide will update a `v2.6.0` single choice proposal module to use the `v2.6.0` base pre-propose module on Osmosis mainnet (`osmosis-1`), so we need the `dao-proposal-single` address and `dao-pre-propose-single` code ID. 27 | 28 | You can use the DAO DAO indexer to query for the active proposal modules in a DAO and find the `dao-proposal-single` address: 29 | 30 | ```bash 31 | DAO_ADDRESS=INSERT_DAO_ADDRESS curl -s https://indexer.daodao.zone/osmosis-1/contract/$DAO_ADDRESS/daoCore/activeProposalModules | jq 32 | ``` 33 | 34 | Or query the chain directly: 35 | 36 | ```bash 37 | osmosisd query contract-state smart $DAO_ADDRESS '{"active_proposal_modules":{}}' --output json | jq 38 | ``` 39 | 40 | The output will look like this: 41 | 42 | ```json 43 | [ 44 | { 45 | "prefix": "A", 46 | "status": "enabled", 47 | "address": "DAO_PROPOSAL_SINGLE_ADDRESS", 48 | "info": { "version": "2.6.0", "contract": "crates.io:dao-proposal-single" } 49 | }, 50 | { 51 | "prefix": "B", 52 | "status": "enabled", 53 | "address": "DAO_PROPOSAL_MULTIPLE_ADDRESS", 54 | "info": { 55 | "version": "2.6.0", 56 | "contract": "crates.io:dao-proposal-multiple" 57 | } 58 | } 59 | ] 60 | ``` 61 | 62 | You can see the `dao-proposal-single` address is `DAO_PROPOSAL_SINGLE_ADDRESS`. 63 | 64 | You can also find the `dao-pre-propose-single` code ID in the `codeIds.json` file linked above: `1250`. 65 | 66 | A few steps involve base64 encoding, which [base64encode.org](https://www.base64encode.org) can help with. 67 | 68 | Here is the configuration we will use: 69 | 70 | - submission policy: DAO members only 71 | - no proposal deposit 72 | 73 | You can look at the JSON schemas' `instantiate` definitions for the pre-propose module to see the configuration fields you need to set, as well as the `dao-proposal-single` contract's JSON schema to see the `update_pre_propose_info` execution message that performs the actual update: 74 | 75 | - [dao-pre-propose-single JSON schema](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/pre-propose/dao-pre-propose-single/schema/dao-pre-propose-single.json) 76 | - [dao-proposal-single JSON schema](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/proposal/dao-proposal-single/schema/dao-proposal-single.json) 77 | 78 | You can also look at the Rust source code, which contains the corresponding `InstantiateMsg` and `ExecuteMsg` structs, though you will need to know how serde serializes various types and enums which can be tricky. The JSON schemas above contain all the information you need, but here is the source code for reference: 79 | 80 | - [dao-proposal-single `ExecuteMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/proposal/dao-proposal-single/src/msg.rs) 81 | - [dao-pre-propose-single `InstantiateMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/pre-propose/dao-pre-propose-single/src/contract.rs) which just extends the [dao-pre-propose-base `InstantiateMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/packages/dao-pre-propose-base/src/msg.rs) 82 | 83 | Putting that all together, the full message we need to execute on the proposal module via a proposal, with everything decoded for readability, follows: 84 | 85 | ``` 86 | { 87 | "update_pre_propose_info": { 88 | "info": { 89 | "module_may_propose": { 90 | "info": { 91 | "code_id": 1250, 92 | "msg": { 93 | "submission_policy": { 94 | "specific": { 95 | "dao_members": true, 96 | "allowlist": [], 97 | "denylist": [] 98 | } 99 | }, 100 | "extension": {} 101 | }, 102 | "admin": { "core_module": {} }, 103 | "funds": [], 104 | "label": "dao-pre-propose-single-v2.6.0" 105 | } 106 | } 107 | } 108 | } 109 | } 110 | ``` 111 | 112 | Now we have to encode the `msg` field with base64: 113 | 114 | ``` 115 | { 116 | "submission_policy": { 117 | "specific": { 118 | "dao_members": true, 119 | "allowlist": [], 120 | "denylist": [] 121 | } 122 | }, 123 | "extension": {} 124 | } 125 | ``` 126 | 127 | This gets base64-encoded to: 128 | 129 | ``` 130 | ewogICJzdWJtaXNzaW9uX3BvbGljeSI6IHsKICAgICJzcGVjaWZpYyI6IHsKICAgICAgImRhb19tZW1iZXJzIjogdHJ1ZSwKICAgICAgImFsbG93bGlzdCI6IFtdLAogICAgICAiZGVueWxpc3QiOiBbXQogICAgfQogIH0sCiAgImV4dGVuc2lvbiI6IHt9Cn0= 131 | ``` 132 | 133 | Now replace the pre-propose module instantiation `msg` field with the base64-encoded instantiation message: 134 | 135 | ``` 136 | { 137 | "update_pre_propose_info": { 138 | "info": { 139 | "module_may_propose": { 140 | "info": { 141 | "code_id": 1250, 142 | "msg": "ewogICJzdWJtaXNzaW9uX3BvbGljeSI6IHsKICAgICJzcGVjaWZpYyI6IHsKICAgICAgImRhb19tZW1iZXJzIjogdHJ1ZSwKICAgICAgImFsbG93bGlzdCI6IFtdLAogICAgICAiZGVueWxpc3QiOiBbXQogICAgfQogIH0sCiAgImV4dGVuc2lvbiI6IHt9Cn0=", 143 | "admin": { "core_module": {} }, 144 | "funds": [], 145 | "label": "dao-pre-propose-single-v2.6.0" 146 | } 147 | } 148 | } 149 | } 150 | } 151 | ``` 152 | 153 | And you have the full message to execute on the proposal module via a proposal. You can now use the DAO DAO UI to create a proposal with the `Execute Smart Contract` action, with the contract address being the `dao-proposal-single` module's address, and the message field containing the above text. Once you pass and execute the proposal, the pre-propose module will be updated. 154 | -------------------------------------------------------------------------------- /docs/dao-management/cross-chain.md: -------------------------------------------------------------------------------- 1 | # Cross-chain support 2 | 3 | DAOs on DAO DAO can create and manage accounts on many chains with the magic of IBC, allowing them to hold assets and interact with smart contracts, native protocols, and dApps across the ecosystem. The following is a description of how this works. A user-friendly guide of how to manage cross-chain assets can be found [here](treasury/cross-chain.md). 4 | 5 | ## Terminology 6 | 7 | In the UI, wherever the phrase "Cross-Chain Accounts" is used, it refers to Polytone (described below). Interchain Accounts, the native Cosmos SDK module, is referred to as "ICA". 8 | 9 | ## Polytone (via CosmWasm) 10 | 11 | [Polytone](https://github.com/cosmos/ibc-apps/tree/main/cosmwasm/polytone) is a protocol developed by DAO DAO which utilizes CosmWasm smart contracts and IBC to enable cross-chain accounts. Any entity on a blockchain, such as a wallet or a DAO (which is just a smart contract), can use Polytone. 12 | 13 | Currently, Polytone can be deployed on any chain that supports both CosmWasm and IBC. Once the necessary smart contracts are deployed on two chains, a Polytone connection can be established between them. A connection is one-way, allowing entities on the source chain to create accounts on the destination chain. Create two Polytone connections, each going in opposite directions between the same two chains, to establish bidirectional cross-chain support. 14 | 15 | If you want to create a cross-chain account for your DAO on a chain that supports CosmWasm and IBC, but you don't see the option in the UI when following the guide mentioned at the beginning of this page, please [reach out to us on Discord](https://discord.daodao.zone) and we will be happy to help. Any chain with DAO DAO deployed should also support Polytone, as well as many other chains in the Cosmos ecosystem. 16 | 17 | Polytone supports automatic relaying, callbacks, error handling, and transaction simulation, making it the best available solution for cross-chain protocols, like DAO DAO. 18 | 19 | ### Drawbacks 20 | 21 | #### Downtime 22 | 23 | If the IBC connection a Polytone connection uses expires (i.e. it's not used at all during its trusted period), the Polytone connection will be frozen, leading to accounts managed through this connection to become temporarily inaccessible. 24 | 25 | Fortunately, a governance proposal on each chain can refresh the expired IBC clients used by a connection and unfreeze it. Also, a Polytone connection can reuse an existing IBC connection, such as the one used to send native tokens to the other chain—since the primary token transfer connection tends to be used quite frequently by others, Polytone connections between well-trafficked chains are at extremely low risk of ever experiencing downtime. 26 | 27 | Also, relayers routinely poll for IBC clients that are almost expired and automatically refresh them, resetting their expiration period. With sufficient relayer uptime, a Polytone connection can experience no downtime. 28 | 29 | ## Interchain Accounts (ICA) 30 | 31 | [ICA](https://ibc.cosmos.network/main/apps/interchain-accounts/overview) is a native Cosmos SDK protocol that enables cross-chain accounts. Similar to Polytone, any entity on a blockchain can use ICA. While it is sometimes supported by chains that do not support CosmWasm (and thus do not support Polytone), we discourage using ICA due to its many drawbacks detailed below. 32 | 33 | ### Drawbacks 34 | 35 | #### Relayers 36 | 37 | Relayers don't seem to automatically relay transactions which establish new ICAs, leading to confusion and requiring a technically knowledgeable human to manually relay the transaction. This is suboptimal when trying to create a seamless experience on a website that is trying to lower knowledge and cost barriers to setting up sophisticated organizations. 38 | 39 | #### Downtime 40 | 41 | On multiple accounts, blockchain developer teams have broken the ICA module during unrelated upgrades, resulting in temporarily locked funds while they fix it and push a new upgrade. Blockchain upgrades are a hassle and require coordination from a supermajority of the validator set. 42 | 43 | It is also possible to break the CosmWasm module during a chain upgrade (which has happened in the past), though in practice this is far more rare and has been seen as a more urgent problem yielding a much faster resolution. 44 | 45 | ICA thus far is seemingly not used enough to warrant the attention we feel is needed in order to be reliable. 46 | 47 | #### Governance restriction 48 | 49 | The destination/host chain can specify/limit which messages ICAs are allowed to execute, and this parameter can be changed at any point through a governance proposal. While we don't expect any chain to intentionally lock a DAO's funds, it is technically possible to do so, which is undesirable. Chains may have valid reasons for needing to configure ICA with specific limitations, and/or they may not always be aware that a DAO on another chain is using ICA to manage funds there. 50 | 51 | #### Missing callbacks 52 | 53 | ICA does not support callbacks, making it impossible for a smart contract on the source chain to query the result of the execution and display success or failure and difficult for a website to do so. 54 | 55 | #### Ambiguous error/timeout distinction 56 | 57 | When an ICA transaction contains an error and cannot be executed (e.g. it tries to send to an invalid address, spend nonexistent funds, or execute a malformed message on a smart contract), nothing happens. Attempting to relay an erroneous transaction simply fails, and eventually it times out **without recording the error**. 58 | 59 | This makes it very difficult to investigate and determine why an ICA transaction did not occur—it may have simply timed out due to lack of relayer activity, or it may have been constructed incorrectly by the sender. 60 | 61 | #### Simulation unsupported 62 | 63 | When creating a proposal in a DAO, it is very useful to first simulate the intended transaction to ensure it is valid before opening up the voting period—it would be a waste of time and effort to go through a whole proposal voting period only to find out that the proposal fails on execution, and sometimes proposals are time-sensitive. The DAO DAO website automatically simulates a proposal before submitting it to prevent this from happening, including cross-chain actions that use Polytone, allowing the proposal creator to view and correct any errors ahead of time. 64 | 65 | This is possible because smart contracts, such as a DAO or Polytone, support transaction simulation, just like wallets and multisigs. 66 | 67 | Unfortunately, ICAs do not support transaction simulation. This means that when creating a proposal containing an ICA execution, you pretty much just have to hope it works. And because ICAs do not store errors if they fail to relay, you won't even be able to tell what caused your ICA execution to do nothing. 68 | 69 | ## Conclusion 70 | 71 | Since ICA is supported by more chains than CosmWasm, it would be very nice to be able to rely on it. However, many of the ICA module's drawbacks are deal breakers, and users of DAO DAO have consistently experienced problems using it. 72 | 73 | Since Polytone solves all of ICA's drawbacks, we strongly urge you to avoid using ICA whenever possible, and let us know when you want a Polytone connection set up on a new chain. 74 | 75 | ### Is ICA necessary? 76 | 77 | In some instances, using ICA is unfortunately necessary. 78 | 79 | #### No CosmWasm 80 | 81 | Chains without CosmWasm of course do not support Polytone, and thus ICA is the only choice if you need to interact directly with a native module on the chain. However, when possible, you should store assets on the DAO's home chain or another one of its Polytone-connected ("Cross-Chain") accounts. 82 | 83 | #### Multi-hop IBC transfers (PFM) 84 | 85 | In order to [send tokens over IBC](treasury/send.md#change-recipient-chain) with intermediary hops that unwind the IBC token (e.g. sending Noble USDC from Osmosis to Neutron), a DAO must have an account on each intermediary chain. It is a requirement of [packet-forward-middleware](https://github.com/cosmos/ibc-apps/tree/main/middleware/packet-forward-middleware) that an address be specified for each chain involved in a multi-hop in case it fails halfway through and needs to leave the tokens in an account on an intermediary chain. This is exceedingly rare but technically possible in the protocol and serves as a failsafe. 86 | 87 | In order to prevent loss of funds or asking DAOs to trust a third party, we decided to require that a DAO has an account on every intermediary chain in a multi-hop, so that if it fails, the tokens being sent remain under DAO control. Thus an ICA may be required to enable multi-hop transfers using assets native to that chain if CosmWasm/Polytone is unsupported. 88 | 89 | For example, Noble USDC is a common asset used by DAOs, and Noble does not (as of writing this) support CosmWasm/Polytone. So in order to perform multi-hops with USDC, a DAO must first create an ICA on Noble. We strongly advise against storing any funds in the Noble ICA, instead just using its existence as a fallback measure during USDC multi-hops from/to other chains. 90 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/how-to-add-a-proposal-module.md: -------------------------------------------------------------------------------- 1 | # How to add a proposal module 2 | 3 | The proposal module system enables DAOs to support any type of execution flow that can be coded in a smart contract. 4 | 5 | DAO DAO provides two modules: 6 | 7 | - single choice (e.g. Yes/No/Abstain) 8 | - multiple choice (e.g. A/B/C/None of the Above) 9 | 10 | You can always add new modules or disable existing ones, though there must always be at least one module enabled (or else the DAO will not function). The most likely reason one would want to add a new module is to use a new version with new features. Because the proposal module interface is standardized and unchanging, newer versions of proposal modules should be backwards compatible. 11 | 12 | Adding and disabling proposal modules is not common, and can be dangerous, and thus is not easily supported by the UI, but it is not hard to do with a little bit of time. 13 | 14 | {% hint style="warning" %} 15 | Be careful to verify all proposal modules function correctly before disabling one you no longer need, because if the only enabled proposal modules are broken or the addresses are incorrect, the DAO will be bricked and all assets will be locked. 16 | {% endhint %} 17 | 18 | ## Guide 19 | 20 | First you need the code IDs of the proposal module and its corresponding pre-propose module. You can find all uploaded DAO DAO code IDs here: [https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/utils/constants/codeIds.json](https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/utils/constants/codeIds.json) 21 | 22 | The following guide will add the `v2.6.0` single choice proposal module to a DAO on Osmosis mainnet (`osmosis-1`), so we need the `dao-proposal-single` and `dao-pre-propose-single` code IDs. 23 | 24 | A few steps involve base64 encoding, which [base64encode.org](https://www.base64encode.org) can help with. 25 | 26 | Here is the configuration we will use: 27 | 28 | - threshold: majority 29 | - quorum: 20% 30 | - max voting period: 1 week 31 | - only members can execute: true 32 | - close proposal on execution failure: true 33 | - allow revoting: false 34 | - submission policy: DAO members only 35 | - no proposal deposit 36 | 37 | You can look at the JSON schemas' `instantiate` definitions for the proposal and pre-propose modules to see the configuration fields you need to set, as well as the `dao-dao-core` contract's JSON schema to see the `update_proposal_modules` execution message that performs the actual update: 38 | 39 | - [dao-proposal-single JSON schema](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/proposal/dao-proposal-single/schema/dao-proposal-single.json) 40 | - [dao-pre-propose-single JSON schema](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/pre-propose/dao-pre-propose-single/schema/dao-pre-propose-single.json) 41 | - [dao-dao-core JSON schema](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/dao-dao-core/schema/dao-dao-core.json) 42 | 43 | You can also look at the Rust source code, which contains the corresponding `InstantiateMsg` and `ExecuteMsg` structs, though you will need to know how serde serializes various types and enums which can be tricky. The JSON schemas above contain all the information you need, but here is the source code for reference: 44 | 45 | - [dao-proposal-single `InstantiateMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/proposal/dao-proposal-single/src/msg.rs) 46 | - [dao-pre-propose-single `InstantiateMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/contracts/pre-propose/dao-pre-propose-single/src/contract.rs) which just extends the [dao-pre-propose-base `InstantiateMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/packages/dao-pre-propose-base/src/msg.rs) 47 | - [dao-dao-core `ExecuteMsg` struct](https://github.com/DA0-DA0/dao-contracts/blob/development/packages/dao-interface/src/msg.rs) defined in the `dao-interface` crate. 48 | 49 | Putting that all together, the full message we need to execute on the DAO via a proposal, with everything decoded for readability, follows: 50 | 51 | ``` 52 | { 53 | "update_proposal_modules": { 54 | "to_add": [{ 55 | "admin": { "core_module": {} }, 56 | "code_id": 1252, 57 | "label": "dao-proposal-single-v2.6.0", 58 | "msg": { 59 | "threshold": { 60 | "threshold_quorum": { 61 | "threshold": { "majority": {} }, 62 | "quorum": { "percent": "0.2" } 63 | } 64 | }, 65 | "max_voting_period": { "time": 604800 }, 66 | "only_members_execute": true, 67 | "close_proposal_on_execution_failure": true, 68 | "allow_revoting": false, 69 | "pre_propose_info": { 70 | "module_may_propose": { 71 | "info": { 72 | "code_id": 1250, 73 | "msg": { 74 | "submission_policy": { 75 | "specific": { 76 | "dao_members": true, 77 | "allowlist": [], 78 | "denylist": [] 79 | } 80 | }, 81 | "extension": {} 82 | }, 83 | "admin": { "core_module": {} }, 84 | "funds": [], 85 | "label": "dao-pre-propose-single-v2.6.0" 86 | } 87 | } 88 | } 89 | }, 90 | "funds": [] 91 | }], 92 | "to_disable": [] 93 | } 94 | } 95 | ``` 96 | 97 | Now we have to recursively encode the `msg` fields with base64, so starting from the innermost `msg` field for the pre-propose module instantiation message: 98 | 99 | ``` 100 | { 101 | "submission_policy": { 102 | "specific": { 103 | "dao_members": true, 104 | "allowlist": [], 105 | "denylist": [] 106 | } 107 | }, 108 | "extension": {} 109 | } 110 | ``` 111 | 112 | This gets base64-encoded to: 113 | 114 | ``` 115 | ewogICJzdWJtaXNzaW9uX3BvbGljeSI6IHsKICAgICJzcGVjaWZpYyI6IHsKICAgICAgImRhb19tZW1iZXJzIjogdHJ1ZSwKICAgICAgImFsbG93bGlzdCI6IFtdLAogICAgICAiZGVueWxpc3QiOiBbXQogICAgfQogIH0sCiAgImV4dGVuc2lvbiI6IHt9Cn0= 116 | ``` 117 | 118 | Now isolate the proposal module instantiation `msg`, and replace the pre-propose module instantiation `msg` field with the base64-encoded pre-propose module instantiation message from above: 119 | 120 | ``` 121 | { 122 | "threshold": { 123 | "threshold_quorum": { 124 | "threshold": { "majority": {} }, 125 | "quorum": { "percent": "0.2" } 126 | } 127 | }, 128 | "max_voting_period": { "time": 604800 }, 129 | "only_members_execute": true, 130 | "close_proposal_on_execution_failure": true, 131 | "allow_revoting": false, 132 | "pre_propose_info": { 133 | "module_may_propose": { 134 | "info": { 135 | "code_id": 1250, 136 | "msg": "ewogICJzdWJtaXNzaW9uX3BvbGljeSI6IHsKICAgICJzcGVjaWZpYyI6IHsKICAgICAgImRhb19tZW1iZXJzIjogdHJ1ZSwKICAgICAgImFsbG93bGlzdCI6IFtdLAogICAgICAiZGVueWxpc3QiOiBbXQogICAgfQogIH0sCiAgImV4dGVuc2lvbiI6IHt9Cn0=", 137 | "admin": { "core_module": {} }, 138 | "funds": [], 139 | "label": "dao-pre-propose-single-v2.6.0" 140 | } 141 | } 142 | } 143 | } 144 | ``` 145 | 146 | This gets base64-encoded to: 147 | 148 | ``` 149 | ewogICJ0aHJlc2hvbGQiOiB7CiAgICAidGhyZXNob2xkX3F1b3J1bSI6IHsKICAgICAgInRocmVzaG9sZCI6IHsgIm1ham9yaXR5Ijoge30gfSwKICAgICAgInF1b3J1bSI6IHsgInBlcmNlbnQiOiAiMC4yIiB9CiAgICB9CiAgfSwKICAibWF4X3ZvdGluZ19wZXJpb2QiOiB7ICJ0aW1lIjogNjA0ODAwIH0sCiAgIm9ubHlfbWVtYmVyc19leGVjdXRlIjogdHJ1ZSwKICAiY2xvc2VfcHJvcG9zYWxfb25fZXhlY3V0aW9uX2ZhaWx1cmUiOiB0cnVlLAogICJhbGxvd19yZXZvdGluZyI6IGZhbHNlLAogICJwcmVfcHJvcG9zZV9pbmZvIjogewogICAgIm1vZHVsZV9tYXlfcHJvcG9zZSI6IHsKICAgICAgImluZm8iOiB7CiAgICAgICAgImNvZGVfaWQiOiAxMjUwLAogICAgICAgICJtc2ciOiAiZXdvZ0lDSnpkV0p0YVhOemFXOXVYM0J2YkdsamVTSTZJSHNLSUNBZ0lDSnpjR1ZqYVdacFl5STZJSHNLSUNBZ0lDQWdJbVJoYjE5dFpXMWlaWEp6SWpvZ2RISjFaU3dLSUNBZ0lDQWdJbUZzYkc5M2JHbHpkQ0k2SUZ0ZExBb2dJQ0FnSUNBaVpHVnVlV3hwYzNRaU9pQmJYUW9nSUNBZ2ZRb2dJSDBzQ2lBZ0ltVjRkR1Z1YzJsdmJpSTZJSHQ5Q24wPSIsCiAgICAgICAgImFkbWluIjogeyAiY29yZV9tb2R1bGUiOiB7fSB9LAogICAgICAgICJmdW5kcyI6IFtdLAogICAgICAgICJsYWJlbCI6ICJkYW8tcHJlLXByb3Bvc2Utc2luZ2xlLXYyLjYuMCIKICAgICAgfQogICAgfQogIH0KfQ== 150 | ``` 151 | 152 | Now replace the proposal module instantiation `msg` field in the `update_proposal_modules` execution message with the base64-encoded proposal module instantiation message from above: 153 | 154 | ``` 155 | { 156 | "update_proposal_modules": { 157 | "to_add": [{ 158 | "admin": { "core_module": {} }, 159 | "code_id": 1252, 160 | "label": "dao-proposal-single-v2.6.0", 161 | "msg": "ewogICJ0aHJlc2hvbGQiOiB7CiAgICAidGhyZXNob2xkX3F1b3J1bSI6IHsKICAgICAgInRocmVzaG9sZCI6IHsgIm1ham9yaXR5Ijoge30gfSwKICAgICAgInF1b3J1bSI6IHsgInBlcmNlbnQiOiAiMC4yIiB9CiAgICB9CiAgfSwKICAibWF4X3ZvdGluZ19wZXJpb2QiOiB7ICJ0aW1lIjogNjA0ODAwIH0sCiAgIm9ubHlfbWVtYmVyc19leGVjdXRlIjogdHJ1ZSwKICAiY2xvc2VfcHJvcG9zYWxfb25fZXhlY3V0aW9uX2ZhaWx1cmUiOiB0cnVlLAogICJhbGxvd19yZXZvdGluZyI6IGZhbHNlLAogICJwcmVfcHJvcG9zZV9pbmZvIjogewogICAgIm1vZHVsZV9tYXlfcHJvcG9zZSI6IHsKICAgICAgImluZm8iOiB7CiAgICAgICAgImNvZGVfaWQiOiAxMjUwLAogICAgICAgICJtc2ciOiAiZXdvZ0lDSnpkV0p0YVhOemFXOXVYM0J2YkdsamVTSTZJSHNLSUNBZ0lDSnpjR1ZqYVdacFl5STZJSHNLSUNBZ0lDQWdJbVJoYjE5dFpXMWlaWEp6SWpvZ2RISjFaU3dLSUNBZ0lDQWdJbUZzYkc5M2JHbHpkQ0k2SUZ0ZExBb2dJQ0FnSUNBaVpHVnVlV3hwYzNRaU9pQmJYUW9nSUNBZ2ZRb2dJSDBzQ2lBZ0ltVjRkR1Z1YzJsdmJpSTZJSHQ5Q24wPSIsCiAgICAgICAgImFkbWluIjogeyAiY29yZV9tb2R1bGUiOiB7fSB9LAogICAgICAgICJmdW5kcyI6IFtdLAogICAgICAgICJsYWJlbCI6ICJkYW8tcHJlLXByb3Bvc2Utc2luZ2xlLXYyLjYuMCIKICAgICAgfQogICAgfQogIH0KfQ==", 162 | "funds": [] 163 | }], 164 | "to_disable": [] 165 | } 166 | } 167 | ``` 168 | 169 | And you have the full message to execute on the DAO via a proposal. You can now use the DAO DAO UI to create a proposal with the `Execute Smart Contract` action, with the contract address being the DAO's `dao-dao-core` contract, and the message field containing the above text. 170 | 171 | Once you execute this, test the new proposal module by creating a proposal, voting on it, and executing it. If everything seems to work, you can now disable the old single choice proposal module by executing the following message in another proposal: 172 | 173 | ``` 174 | { 175 | "update_proposal_modules": { 176 | "to_add": [], 177 | "to_disable": ["EXISTING PROPOSAL MODULE ADDRESS"] 178 | } 179 | } 180 | ``` 181 | 182 | Ideally, wait a while to see the new proposal module in action before disabling the old one. 183 | -------------------------------------------------------------------------------- /docs/dao-governance/proposals/autofill-proposal-link.md: -------------------------------------------------------------------------------- 1 | # How to create an autofill proposal link 2 | 3 | Proposals and the actions they contain can be generated programmatically and passed in via URL—this enables a more user-friendly experience for users of a specific app or service that rely on DAO DAO for their governance needs. 4 | 5 | Similar to the [bulk import actions](bulk-import-actions.md) feature, you must find the key and the shape of the data object for each action. However, unlike bulk import, you must also find the proposal module adapter ID, and the action key in the object must be `actionKey` instead of `key`. 6 | 7 | ## Link format 8 | 9 | The link is simply the proposal creation page with a `prefill` parameter added, like this: 10 | 11 | `https://daodao.zone/dao//proposals/create?prefill=` 12 | 13 | The `prefill` parameter can either be: 14 | 15 | - a stringified JSON object 16 | - a base64-encoded JSON object 17 | 18 | {% hint style="warning" %} 19 | Remember to URL-escape the `prefill` parameter, whichever format it's in. For example, base64 strings sometimes contain `+` and `=`, which must be escaped as `%2B` and `%3D` respectively, or else they'll be decoded incorrectly and fail to autofill the proposal. 20 | {% endhint %} 21 | 22 | The format of the `prefill` object is always: 23 | 24 | ```json 25 | { 26 | "id": "", 27 | "data": { 28 | // PROPOSAL MODULE FORM DATA 29 | } 30 | } 31 | ``` 32 | 33 | You can use [base64encode.org](https://www.base64encode.org) to encode the JSON object to a base64 string and [urlencoder.org](https://www.urlencoder.org) to URL-escape the base64 string. 34 | 35 | ### IPFS 36 | 37 | The prefill object can get quite large which becomes impractical to use in a URL, so instead you can upload a JSON blob to IPFS and replace the `prefill` parameter with `pi`, pointing to the IPFS hash containing the object: 38 | 39 | `https://daodao.zone/dao//proposals/create?pi=` 40 | 41 | ### Proposal module adapter ID 42 | 43 | The proposal module adapter IDs can be found in [`@dao-dao/utils/constants/adapters.ts`](https://github.com/DA0-DA0/dao-dao-ui/blob/development/packages/utils/constants/adapters.ts). 44 | 45 | For `dao-proposal-single` (the most commonly used proposal module that supports proposals with Yes/No/Abstain votes), the ID is `DaoProposalSingle`. For `dao-proposal-multiple` (which supports multiple choice proposals), the ID is `DaoProposalMultiple`. 46 | 47 | ### Proposal module form data 48 | 49 | The form data structure can be found in [`@dao-dao/types/proposal-module-adapter.ts`](https://github.com/DA0-DA0/dao-dao-ui/blob/cd6def2f16a44895352efcc37122bde9af3e677b/packages/types/proposal-module-adapter.ts). 50 | 51 | The [single choice proposal form data](https://github.com/DA0-DA0/dao-dao-ui/blob/cd6def2f16a44895352efcc37122bde9af3e677b/packages/types/proposal-module-adapter.ts#L411-L417) is: 52 | 53 | ```json 54 | { 55 | "title": "", 56 | "description": "", 57 | "actionData": [ 58 | { 59 | "actionKey": "", 60 | "data": { 61 | // ACTION DATA 62 | } 63 | }, 64 | ... 65 | ] 66 | } 67 | ``` 68 | 69 | The [multiple choice proposal form data](https://github.com/DA0-DA0/dao-dao-ui/blob/cd6def2f16a44895352efcc37122bde9af3e677b/packages/types/proposal-module-adapter.ts#L433-L438) is: 70 | 71 | ```json 72 | { 73 | "title": "", 74 | "description": "", 75 | "choices": [ 76 | { 77 | "title": "