diff --git a/docs/DAO-Management/creating-DAOs/Chartered-DAO.md b/docs/DAO-Management/creating-DAOs/Chartered-DAO.md index fff3b03..9be3848 100644 --- a/docs/DAO-Management/creating-DAOs/Chartered-DAO.md +++ b/docs/DAO-Management/creating-DAOs/Chartered-DAO.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 7 --- # Charter Your DAO diff --git a/docs/DAO-Management/creating-DAOs/Community-Token-DAO.md b/docs/DAO-Management/creating-DAOs/Community-Token-DAO.md new file mode 100644 index 0000000..cacdf0f --- /dev/null +++ b/docs/DAO-Management/creating-DAOs/Community-Token-DAO.md @@ -0,0 +1,66 @@ +--- +sidebar_position: 3 +--- + +# Create a Community Token DAO + +When you choose to create a community DAO, we assume that you're an advanced user who understands all the governance setup details and we present you a more complex and flexible form than the multisig DAO. + +So let's create a Community DAO: + +--- + +**Click on `Create DAO` on the home page and option and the following wizard will be shown:** + +![multisiformempty](https://user-images.githubusercontent.com/22420711/178862160-75a2bd5a-133e-47a2-a487-9b7ad6f66137.png) + +**Click on the `Community Token DAO` option** + +**Name your wallet** + +![multisigformname](https://user-images.githubusercontent.com/22420711/179025138-518b96aa-64cb-430f-a597-7ba22a369bb8.png) + +:::tip +Realms will provide a governance program ID by default, users can add their own customer Program ID under Advanced Options at this step in the multisig wallet wizard. +::: + +**Determine the DAO's community token** + +**Place the `Community Token Mint`** if you have one, and if not, it will be generated for you. The community token mint is the token that will be used by the community to vote on proposals and it is required to create a governance. + When you put the community token mint, a switch `Transfer Authority` will show up. If checked, it will transfer the authority of the community token to the realm. + +![multisigformname](https://user-images.githubusercontent.com/22420711/179033113-bfb2f48a-f1c8-403d-9c35-07b3029dbd4c.png) + +**Minimum number of community tokens needed to manage this DAO:** this field represents the minimum number of tokens required to by a member to create a governance (e.g. create proposal) + +:::tip +Realms provides the ability to determine the votes needed to pass a proposal by calculating the number of tokens in circulation (instead of using the total Mint supply) , users can do this under Advanced Options at this step in the Community Token DAO wizard. +::: + +![multisigformname](https://user-images.githubusercontent.com/22420711/179033254-4917cd81-c931-40bb-9858-1a01a1cb917e.png) + +**Select the minimum percentage of `yes votes` to approve a proposal. The default is 60%** + +![multisigformname](https://user-images.githubusercontent.com/22420711/179034017-03bd93cf-2c46-4601-9af9-6cb4e8c9489d.png) + +--- + +### The Council + +This will guide you to setup the council settings. This step is optional if you import your community token. It is mandatory if you are having realms create your community token. This is to ensure easy setup for initial governance rules. Here you have the ability to import other council tokens or create new ones. Council members can supervise and moderate DAO activities. It’s recommended to always create the council for DAOs in their incubation stage to prevent governance attacks or accidental losses of assets managed by the DAO. + +![multisigformname](https://user-images.githubusercontent.com/22420711/179035193-1a3cca8e-4c23-469b-9cd0-a8132ac6c32c.png) + +**Invite Members** + +Input solana addresses to add members to the Community Token DAO + +![multisigformname](https://user-images.githubusercontent.com/22420711/179035734-95c36450-c0c9-416d-9947-a40c715b43fa.png) + +**After following thes steps, you should have something like the image below:** + +![multisigformname](https://user-images.githubusercontent.com/22420711/179036613-8f6431f2-0943-411c-bb73-30c91bd3ee7d.png) + +**Then just click `Create Community Token DAO`, your wallet will pop up asking for signature. Approve to create the tokens and deploy the DAO.** + +After the transaction is complete, you'll be redirected to the DAO's page. diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md new file mode 100644 index 0000000..f870a8d --- /dev/null +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 5 +--- + +# Convert existing DAO to NFT Community DAO + +NFT Community DAO is a DAO where NFTs are used as the governance token. +Any DAO can enable NFT voting through the Plug & Play mechanism of [spl-governance](https://github.com/solana-labs/solana-program-library/blob/master/governance/README.md). + +In order to enable NFT governance for a DAO the [NFT voting plugin](https://github.com/solana-labs/governance-program-library) has to be enabled for the DAO. + +The NFT voting plugin grants governance power to NFTs based on the [Metaplex Certified Collection](https://www.metaplex.com/posts/certified-collections) they belong to. +In the most basic scenario each NFT gives its owner 1 vote. The owner can have multiple NFTs and vote with all of them at once. +A DAO can also use more advanced scenarios where multiple collections with different voting power are used. +This way a multi tier governance structure can be created where different NFTs can represent +different membership levels. + +:::tip Note +Metaplex supports certified collections from version 1.1 of the standard. +NFTs minted with the older Metadata standard must be upgraded first to the latest version before they can be used for governance. +::: + +Only NFTs with certified collection on their Metadata can participate in governance. + +:::danger Security +Beware the authority of the collection can certify and uncertify NFTs for the collection. +It means it has the ultimate power to decide who can and can't vote in the DAO. +It's recommended for the authority to be transferred to the DAO. +::: + +## When to use + +Reference these docs to convert existing community token DAOs to NFT community DAOs + +## Configure NFT Voting Plugin + +In order to configure the NFT Plugin a proposal with the following 3 instructions must be created. +Note: The proposal must be created for the governance with realm authority. + +1. Create NFT plugin registrar + +![create-NFT-plugin-registrar](/img/NFT-Community-DAO/create-NFT-plugin-registrar.png) + +2. Create NFT plugin max voter weight + +![create-NFT-plugin-max-voter-weight](/img/NFT-Community-DAO/create-NFT-plugin-max-voter-weight.png) + +3. Configure NFT plugin collection + +![configure-NFT-plugin-collection](/img/NFT-Community-DAO/configure-NFT-plugin-collection.png) + +The NFT collection configuration instruction must be added for every NFT collection which should be allowed +to participate in governance of the DAO. + +Each NFT collection has the following parameters: + +**`Collection size`** - The number of certified NFTs in the collection. The size of the collection is +used to calculate the maximum voter weight and voting quorum levels. + +**`Collection weight`** - The relative voting weight of the NFTs from the collection. +In multi collection setup it allows to +assign different voting weights to different NFTs and create multi NFT / multi tier governance setup. +For a single collection it should be set to 1 + +**`Collection`** - The Id of the NFT collection which should be used for governance. + +:::tip +The collection ID can be found on the NFT explorer view. For example for [SMB NFT](https://explorer.solana.com/address/Fckuc1pnqQxsMMa3R8Smccz2iS5YQBeos7pG7xV4B1Ma) the collection id is `SMBH3wF6baUj6JWtzYvqcKuj2XCKWDqQxzspY12xPND` + +![smb-633-explorer-view](/img/NFT-Community-DAO/smb-633-explorer-view.png) +::: + +## Enable NFT Voting Plugin + +Once the NFT voting plugin configuration proposal is voted on and all instructions executed the DAO can enable NFT governance +through a `DAO Config Change` proposal. + +From the DAO parameters page select `Change Config` option + +![DAO-config-change](/img/NFT-Community-DAO/DAO-config-change.png) + +And then set the DAO configuration parameters + +Both **`Community voter weight addin`** and **`Community max voter weight addin`** parameters should be set to +the NFT Voting Plugin Program Id `GnftV5kLjd67tvHpNGyodwWveEKivz3ZWvvE3Z4xi2iw` + +![enable-NFT-voting-plugin](/img/NFT-Community-DAO/enable-NFT-voting-plugin.png) + + + +## Voting with NFTs + +Once the proposal to enable the NFT Voting Plugin for the DAO is executed any owner of an NFT from the configured +collection can participate in the DAO governance. + +The NFTs eligible for governance are displayed in the account view. + +![your-NFTs.png](/img/NFT-Community-DAO/your-NFTs.png) + +Note: Before you can vote in the DAO you have to register your wallet with the DAO. Visit this step by step tutorial here https://www.youtube.com/watch?v=yIAwmuE74dI&t=73s \ No newline at end of file diff --git a/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md b/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md index dc1c632..f31b43d 100644 --- a/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md +++ b/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md @@ -5,13 +5,6 @@ sidebar_position: 4 # Create NFT Community DAO NFT Community DAO is a DAO where NFTs are used as the governance token. -Any DAO can enable NFT voting through the Plug & Play mechanism of [spl-governance](https://github.com/solana-labs/solana-program-library/blob/master/governance/README.md). - -In order to enable NFT governance for a DAO the [NFT voting plugin](https://github.com/solana-labs/governance-program-library) has to be enabled for the DAO. - -:::danger Security -As of 29/04/2022 the NFT voting plugin program hasn't been security audited yet. Use at your own risk. -::: The NFT voting plugin grants governance power to NFTs based on the [Metaplex Certified Collection](https://www.metaplex.com/posts/certified-collections) they belong to. In the most basic scenario each NFT gives its owner 1 vote. The owner can have multiple NFTs and vote with all of them at once. @@ -19,11 +12,6 @@ A DAO can also use more advanced scenarios where multiple collections with diffe This way a multi tier governance structure can be created where different NFTs can represent different membership levels. -:::tip Note -Metaplex supports certified collections from version 1.1 of the standard. -NFTs minted with the older Metadata standard must be upgraded first to the latest version before they can be used for governance. -::: - Only NFTs with certified collection on their Metadata can participate in governance. :::danger Security @@ -34,93 +22,38 @@ It's recommended for the authority to be transferred to the DAO. ## Create DAO -If you have your DAO already created you can skip this section. -However please take note of the DAO parameters needed for the setup and adjust your DAO configuration accordingly. - -In order to create the NFT Community DAO use the [Bespoke DAO Wizard](bespoke-DAO.md) with the following parameters: - -**`Min community tokens to create proposal`** - Set to 1 to allow each NFT holder to create new governances. -If more restrictive setup is required the min threshold can be set to a higher value accordingly. - -**`Custom program Id`** - Use the default instance of `spl-governance` or an instance with minim version of v2.2.4 - -:::danger -spl-governance program version must be equal or higher than v2.2.4 for the NFT plugin to work correctly. -If the plugin is enabled for older versions it can result in irreversible deadlock of the DAO. -::: - -**`Council`** - Setup a DAO with the council. - -:::tip -It's recommended to always setup the council as a Multisig for the initial DAO members. -The members would be able to moderate the DAO governance process at its inception and prevent -irreversible actions like setting impossible quorums or defending the DAO from governance attacks. -After successful decentralization the council can be removed thorough a proposal. -::: - -## Configure NFT Voting Plugin - -In order to configure the NFT Plugin a proposal with the following 3 instructions must be created. -Note: The proposal must be created for the governance with realm authority. - -1. Create NFT plugin registrar - -![create-NFT-plugin-registrar](/img/NFT-Community-DAO/create-NFT-plugin-registrar.png) - -2. Create NFT plugin max voter weight - -![create-NFT-plugin-max-voter-weight](/img/NFT-Community-DAO/create-NFT-plugin-max-voter-weight.png) +**Click on `Create DAO` on the home page and option and the following wizard will be shown:** -3. Configure NFT plugin collection +![multisiformempty](https://user-images.githubusercontent.com/22420711/178862160-75a2bd5a-133e-47a2-a487-9b7ad6f66137.png) -![configure-NFT-plugin-collection](/img/NFT-Community-DAO/configure-NFT-plugin-collection.png) +**Click on the `NFT Community DAO` option** -The NFT collection configuration instruction must be added for every NFT collection which should be allowed -to participate in governance of the DAO. +**Name your wallet** -Each NFT collection has the following parameters: - -**`Collection size`** - The number of certified NFTs in the collection. The size of the collection is -used to calculate the maximum voter weight and voting quorum levels. - -**`Collection weight`** - The relative voting weight of the NFTs from the collection. -In multi collection setup it allows to -assign different voting weights to different NFTs and create multi NFT / multi tier governance setup. -For a single collection it should be set to 1 - -**`Collection`** - The Id of the NFT collection which should be used for governance. +![multisigformname](https://user-images.githubusercontent.com/22420711/179073700-4f80df39-657c-48e0-b40b-04186a52624e.png) :::tip -The collection ID can be found on the NFT explorer view. For example for [SMB NFT](https://explorer.solana.com/address/Fckuc1pnqQxsMMa3R8Smccz2iS5YQBeos7pG7xV4B1Ma) the collection id is `SMBH3wF6baUj6JWtzYvqcKuj2XCKWDqQxzspY12xPND` - -![smb-633-explorer-view](/img/NFT-Community-DAO/smb-633-explorer-view.png) +Realms will provide a governance program ID by default, users can add their own customer Program ID under Advanced Options at this step in the multisig wallet wizard. ::: -## Enable NFT Voting Plugin - -Once the NFT voting plugin configuration proposal is voted on and all instructions executed the DAO can enable NFT governance -through a `DAO Config Change` proposal. - -From the DAO parameters page select `Change Config` option - -![DAO-config-change](/img/NFT-Community-DAO/DAO-config-change.png) +**Select your NFT collection from your wallet or input your collection address** -And then set the DAO configuration parameters +![multisigformname](https://user-images.githubusercontent.com/22420711/179074587-61f5122a-24be-49af-bdc9-4f712038c2e5.png) -Both **`Community voter weight addin`** and **`Community max voter weight addin`** parameters should be set to -the NFT Voting Plugin Program Id `GnftV5kLjd67tvHpNGyodwWveEKivz3ZWvvE3Z4xi2iw` +**Select the total number of NFTs in the collection and the approval threshold to pass a proposal** -![enable-NFT-voting-plugin](/img/NFT-Community-DAO/enable-NFT-voting-plugin.png) +![multisigformname](https://user-images.githubusercontent.com/22420711/179075252-1032e31d-79e5-449c-9c89-ec3126c6bb3d.png) +### The Council +This will guide you to setup the council settings. This step is optional if you import your community token. It is mandatory if you are having realms create your community token. This is to ensure easy setup for initial governance rules. Here you have the ability to import other council tokens or create new ones. Council members can supervise and moderate DAO activities. It’s recommended to always create the council for DAOs in their incubation stage to prevent governance attacks or accidental losses of assets managed by the DAO. -## Voting with NFTs +![multisigformname](https://user-images.githubusercontent.com/22420711/179075601-2bcb0e47-fef4-4dd1-8f7f-d8db92bec0b0.png) -Once the proposal to enable the NFT Voting Plugin for the DAO is executed any owner of an NFT from the configured -collection can participate in the DAO governance. +**After following this steps, you should have something like the image below:** -The NFTs eligible for governance are displayed in the account view. +![multisigformname](https://user-images.githubusercontent.com/22420711/179075952-74bd47ce-d1f5-4e7b-a8bd-00f2763883e8.png) -![your-NFTs.png](/img/NFT-Community-DAO/your-NFTs.png) +**Then just click `Create NFT Community DAO`, your wallet will pop up asking for signature. Approve to create the tokens and deploy the DAO.** -Note: Before you can vote in the DAO you have to register your wallet with the DAO. \ No newline at end of file +After the transaction is complete, you'll be redirected to the DAO's page. diff --git a/docs/DAO-Management/creating-DAOs/Voter-Staking-Registry.md b/docs/DAO-Management/creating-DAOs/Voter-Staking-Registry.md new file mode 100644 index 0000000..5e314d9 --- /dev/null +++ b/docs/DAO-Management/creating-DAOs/Voter-Staking-Registry.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 8 +--- + +# Voter Stake Registry + +Enabling voter staking gives the DAO the ability to let their members stake their goverance tokens in exchange for voting rights + +Let's review how to setup this plugin. You can review the step by step video here https://www.youtube.com/watch?v=PlDInTQF1jk + +--- + +The first step is to create a community token DAO. Instructions to do this are at docs.realms.today/Community-Token-DAO + +--- + +:::tip +Many of these transaction can be done using the multi-transaction proposal functionality in Realms. The enabling of the plugin will need to be in a separate proposal. +::: + +:::tip +If your DAO is new, have vote by council checked to ensure that the voting process is seamless during intial DAO setup +::: + +:::tip +Preview your transactions using our preview functionality before executing them to ensure they will be successfull +::: + +Once we have a Community Token DAO setup lets complete the below transactions + +Mint Tokens to your Wallet. If you allowed realms to create a new governance token for you - the circulating supply is default 0. Lets mint some to your wallet using the below process. + +![multisiformempty](https://user-images.githubusercontent.com/22420711/179419238-6fa11764-a061-4b11-9550-80f41319dade.png) + +Then, lets create the voter staking registrar + +![multisiformempty](https://user-images.githubusercontent.com/22420711/179419318-3075e551-4eb2-40df-aaf2-9cd61165419b.png) + diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md deleted file mode 100644 index d2a7f61..0000000 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Bespoke DAO - -![multisigbespoke](/img/multisig-DAO/multisig-bespoke.png) - -When you choose to create a bespoke DAO, we assume that you're an advanced user who understands all the governance setup details and we present you a more complex and flexible form than the multisig DAO. - -So let's create a Bespoke DAO: - ---- - -## Creating the DAO - -With your governance setup plan in hand, you should fill the form as follows. The bespoke mode is split in 3 steps, let's do one by one: - -### Step 1: Name, Community and Program - -In the first step, you'll need to fill the basic configuration for your DAO - -![multisigbespoke](/img/multisig-DAO/multisig-bespoke-empty.png) - -1. **Name your DAO:** Choose the name for your DAO but bear in mind that if you choose a name that already exists, the transaction will fail. - -2. **Place the `Community Token Mint`** if you have one, and if not, it will be generated for you. The community token mint is the token that will be used by the community to vote on proposals and it is required to create a governance. - 1. When you put the community token mint, a switch `Transfer Authority` will show up. If checked, it will transfer the authority of the community token to the realm. - -3. **Min community tokens to create governance:** this field represents that to create a governance, there should be at least `N%` of the max supply of the tokens minted, being 1% the default value for tokens with supply bigger than 0. If the supply is 0, then this value will be set to `1000000` by default. - -4. **Community mint supply factor:** the max vote weight of the community token. If it is set to 1 then total supply of the community governance token equals to 100% vote. This value can vary from `0.0000000001` to `1`. - -:::tip -If you don't fill this field, the community token will be generated by the app -::: - -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-community.png) - -5.**The `Governance Program Id`** field represents the Governance Program of the organization. If a DAO wants full control of their DAOs, they should deploy their own governance program. But to facilitate, Solana provides a default Governance program ID `GovER5Lthms3bLBqWub97yVrMmEogzX7xNjdXpPPCVZw` so, if you don't want to deploy a governance program now, it is possible to use this instance. - -:::tip -Checking `Use Test Instance` will change the program id to `GTesTBiEWE32WHXXE2S4XbZvA5CrEc4xs6ZgRe895dP` and run in a test program instead of the main program id. This is recommended if you are deploying a testing DAO. -::: - -![multisigbespokegov](/img/multisig-DAO/multisig-bespoke-govtoken.png) - -6. **Lastly, the `Governance program version`** that represents the version of the governance program. If you're using the default instance then at the time of writing the version of the deployed program is 1. - -![multisigbespokeversion](/img/multisig-DAO/multisig-bespoke-programversion.png) - -7. **Click next to proceed to the [next step](#step-2-the-council)**. - ---- - -### Step 2: The Council - -The second step will guide you to setup the council settings. This step is optional and you can uncheck `Use Council` so you won't have a council for your DAO. - -1. **Place the `Council Token Mint`** The council token is a token that will be distributed to the DAO's team. It's usually necessary if your DAO has no community and needs some level of governance. - -:::tip -This step is optional, you don't need council mint to create a bespoke DAO but if you want a council, but doesn't have a token mint id, let the field empty and we'll generate for you. -::: - -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-council.png) - -2. **Click next to proceed to the [next step](#step-3-the-summary)**. - -### Step 3: The Summary - -The third step will show a summary of all the data you have put in the form. Check to see if everything is alright - -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-summary.png) - -**Click create, sign the transactions**, and when all transactions are finished, you'll be redirected to the DAO's page. - - diff --git a/docs/DAO-Management/creating-DAOs/gated-DAO.md b/docs/DAO-Management/creating-DAOs/gated-DAO.md index c88b2e2..915a873 100644 --- a/docs/DAO-Management/creating-DAOs/gated-DAO.md +++ b/docs/DAO-Management/creating-DAOs/gated-DAO.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 6 --- # Protect a DAO with Civic Pass diff --git a/docs/DAO-Management/creating-DAOs/multisig-DAO.md b/docs/DAO-Management/creating-DAOs/multisig-DAO.md index 9320d89..ebb368a 100644 --- a/docs/DAO-Management/creating-DAOs/multisig-DAO.md +++ b/docs/DAO-Management/creating-DAOs/multisig-DAO.md @@ -2,15 +2,15 @@ sidebar_position: 2 --- -# Create a Multisig DAO +# Create a Multisig Wallet -The multisig option is the first and easiest way to create a DAO. When you select this option you only need to worry about three things: +The multisig option is ane easy way to create a shared wallet. When you select this option you only need to worry about three things: -1. The name of your DAO; +1. The name of your multisig wallet; 2. The approval quorum, that is the minimum amount of yes votes to accept a proposal; and -3. People who'll be part of your team, whose will own a council token. +3. People who'll be part of your team who will own a council token. -So, let's create a multisig DAO together. +So, let's create a multisig wallet together. --- @@ -18,7 +18,7 @@ So, let's create a multisig DAO together. ![multisiformempty](https://user-images.githubusercontent.com/22420711/178862160-75a2bd5a-133e-47a2-a487-9b7ad6f66137.png) -**Click on the 'Multi-Signature Wallet'option** +**Click on the `Multi-Signature Wallet` option** ![multisiformempty](https://user-images.githubusercontent.com/22420711/178862472-2e64a49c-9a75-4e82-8fd5-3c07f73dd1f0.png) @@ -42,9 +42,9 @@ Input solana addresses to add members to the multisig wallet ![multisigquorum](https://user-images.githubusercontent.com/22420711/178866502-70616cea-1564-4237-9541-10602726b98c.png) -**After following this steps, you should have something like the image below:** +**After following these steps, you should have something like the image below:** ![multisigteam](https://user-images.githubusercontent.com/22420711/178866847-f6ca16f3-c3c1-491b-9442-70a715cb86f0.png) **Then just click `Create wallet`, your wallet will pop up asking for signature. Approve to create the tokens and deploy the DAO.** -After the transaction is complete, you'll be redirected to the DAO's page. +After the transaction is complete, you'll be redirected to the multisig wallet's page.