From 24895b1dcf0980d455852c06eff8259e6cfa7b06 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Thu, 14 Jul 2022 09:54:38 -0700 Subject: [PATCH 01/13] commit --- .../creating-DAOs/bespoke-DAO.md | 70 ++++++++----------- .../creating-DAOs/multisig-DAO.md | 2 +- 2 files changed, 30 insertions(+), 42 deletions(-) diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md index d2a7f61..77dcfbc 100644 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md @@ -2,77 +2,65 @@ sidebar_position: 3 --- -# Create a Bespoke DAO +# Create a Community Token DAO -![multisigbespoke](/img/multisig-DAO/multisig-bespoke.png) +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. -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: +So let's create a Community 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) +**Click on `Create DAO` on the home page and option and the following wizard will be shown:** -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. +![multisiformempty](https://user-images.githubusercontent.com/22420711/178862160-75a2bd5a-133e-47a2-a487-9b7ad6f66137.png) -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. +**Click on the `Community Token DAO` option** -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. +**Name your wallet** -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`. +![multisigformname](https://user-images.githubusercontent.com/22420711/179025138-518b96aa-64cb-430f-a597-7ba22a369bb8.png) :::tip -If you don't fill this field, the community token will be generated by the app +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. ::: -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-community.png) +**Determine the DAO's community token** -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. +**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. + +**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. :::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. +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. ::: -![multisigbespokegov](/img/multisig-DAO/multisig-bespoke-govtoken.png) +![multisigformname](https://user-images.githubusercontent.com/22420711/179033113-bfb2f48a-f1c8-403d-9c35-07b3029dbd4c.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. +![multisigformname](https://user-images.githubusercontent.com/22420711/179033254-4917cd81-c931-40bb-9858-1a01a1cb917e.png) -![multisigbespokeversion](/img/multisig-DAO/multisig-bespoke-programversion.png) +**Select the minimum percentage of `yes votes` to approve a proposal. The default is 60%** -7. **Click next to proceed to the [next step](#step-2-the-council)**. +![multisigformname](https://user-images.githubusercontent.com/22420711/179034017-03bd93cf-2c46-4601-9af9-6cb4e8c9489d.png) --- -### 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. +### The Council -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. +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. -:::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. -::: +![multisigformname](https://user-images.githubusercontent.com/22420711/179035193-1a3cca8e-4c23-469b-9cd0-a8132ac6c32c.png) -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-council.png) +**Invite Members** -2. **Click next to proceed to the [next step](#step-3-the-summary)**. +Input solana addresses to add members to the Community Token DAO -### Step 3: The Summary +![multisigformname](https://user-images.githubusercontent.com/22420711/179035734-95c36450-c0c9-416d-9947-a40c715b43fa.png) -The third step will show a summary of all the data you have put in the form. Check to see if everything is alright +**After following this steps, you should have something like the image below:** -![multisigbespokecomm](/img/multisig-DAO/multisig-bespoke-summary.png) +![multisigformname](https://user-images.githubusercontent.com/22420711/179036613-8f6431f2-0943-411c-bb73-30c91bd3ee7d.png) -**Click create, sign the transactions**, and when all transactions are finished, you'll be redirected to the DAO's page. +**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/multisig-DAO.md b/docs/DAO-Management/creating-DAOs/multisig-DAO.md index 9320d89..6291d7d 100644 --- a/docs/DAO-Management/creating-DAOs/multisig-DAO.md +++ b/docs/DAO-Management/creating-DAOs/multisig-DAO.md @@ -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) From 3d1abe0808eb2f83d527475c7ced3aafd38cdd79 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Thu, 14 Jul 2022 13:20:38 -0700 Subject: [PATCH 02/13] Commit --- .../creating-DAOs/NFT-Community-DAO.md | 101 +++--------------- .../creating-DAOs/bespoke-DAO.md | 2 +- .../creating-DAOs/multisig-DAO.md | 2 +- 3 files changed, 19 insertions(+), 86 deletions(-) diff --git a/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md b/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md index dc1c632..d8e461f 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 `Community Token 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/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md index 77dcfbc..c121b8b 100644 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md @@ -57,7 +57,7 @@ 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 this steps, you should have something like the image below:** +**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) diff --git a/docs/DAO-Management/creating-DAOs/multisig-DAO.md b/docs/DAO-Management/creating-DAOs/multisig-DAO.md index 6291d7d..13609cc 100644 --- a/docs/DAO-Management/creating-DAOs/multisig-DAO.md +++ b/docs/DAO-Management/creating-DAOs/multisig-DAO.md @@ -42,7 +42,7 @@ 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.** From 898d92d73d8b7491d4d3c4f095f3775b135bf108 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Thu, 14 Jul 2022 13:26:29 -0700 Subject: [PATCH 03/13] Commit --- docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md b/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md index d8e461f..f31b43d 100644 --- a/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md +++ b/docs/DAO-Management/creating-DAOs/NFT-Community-DAO.md @@ -26,7 +26,7 @@ It's recommended for the authority to be transferred to the DAO. ![multisiformempty](https://user-images.githubusercontent.com/22420711/178862160-75a2bd5a-133e-47a2-a487-9b7ad6f66137.png) -**Click on the `Community Token DAO` option** +**Click on the `NFT Community DAO` option** **Name your wallet** From a075b581ce5d3de10151aa6a68feca04cd3d93b2 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 06:59:48 -0700 Subject: [PATCH 04/13] Commit --- .../creating-DAOs/Chartered-DAO.md | 2 +- .../creating-DAOs/Convert-NFT.md | 126 ++++++++++++++++++ .../DAO-Management/creating-DAOs/gated-DAO.md | 2 +- 3 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 docs/DAO-Management/creating-DAOs/Convert-NFT.md 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/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md new file mode 100644 index 0000000..474831e --- /dev/null +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 5 +--- + +# 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. +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. +::: + +## 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) + +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. \ No newline at end of file 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 From 440ee3175d298af11f9a23d75f1002286ccda152 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 07:01:16 -0700 Subject: [PATCH 05/13] commit --- docs/DAO-Management/creating-DAOs/Convert-NFT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index 474831e..d1c241f 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -2,7 +2,7 @@ sidebar_position: 5 --- -# Create NFT Community DAO +# Convert 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). From 682a4f095ad94b01c43ed46139f3306ed1f03a8a Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 07:02:21 -0700 Subject: [PATCH 06/13] commit --- docs/DAO-Management/creating-DAOs/Convert-NFT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index d1c241f..419d5b5 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -2,7 +2,7 @@ sidebar_position: 5 --- -# Convert to NFT Community DAO +# 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). From da72d7306716c58fb2e25dfe7ddda6e4e83ad06b Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 10:43:59 -0700 Subject: [PATCH 07/13] commit --- .../DAO-Management/creating-DAOs/Convert-NFT.md | 17 ++--------------- .../DAO-Management/creating-DAOs/bespoke-DAO.md | 10 +++++++--- .../creating-DAOs/multisig-DAO.md | 12 ++++++------ 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index 419d5b5..64b9cb9 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -32,22 +32,9 @@ 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. ::: -## Create DAO +## When to use -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. -::: +Reference thesese docs to convert existing community token DAOs to NFT community DAOs **`Council`** - Setup a DAO with the council. diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md index c121b8b..bc8278c 100644 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md @@ -29,13 +29,17 @@ Realms will provide a governance program ID by default, users can add their own **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. -**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. +![multisigformname](https://user-images.githubusercontent.com/22420711/179033113-bfb2f48a-f1c8-403d-9c35-07b3029dbd4c.png) + +**Min community tokens to create governance:** 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. +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. ::: -![multisigformname](https://user-images.githubusercontent.com/22420711/179033113-bfb2f48a-f1c8-403d-9c35-07b3029dbd4c.png) +:::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) diff --git a/docs/DAO-Management/creating-DAOs/multisig-DAO.md b/docs/DAO-Management/creating-DAOs/multisig-DAO.md index 13609cc..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. --- @@ -47,4 +47,4 @@ Input solana addresses to add members to the multisig wallet **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. From c56ca84dda19f850fcfecef6786636180e4739a9 Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 10:48:51 -0700 Subject: [PATCH 08/13] commit --- docs/DAO-Management/creating-DAOs/bespoke-DAO.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md index bc8278c..9dcc55d 100644 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md @@ -33,10 +33,6 @@ Realms will provide a governance program ID by default, users can add their own **Min community tokens to create governance:** this field represents the minimum number of tokens required to by a member to create a governance (e.g. create proposal) -:::tip -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. -::: - :::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. ::: From d9334e1aa55f88e51d714451f2f91037db840a8a Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 10:52:37 -0700 Subject: [PATCH 09/13] commit --- docs/DAO-Management/creating-DAOs/Convert-NFT.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index 64b9cb9..bbb1152 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -34,16 +34,7 @@ It's recommended for the authority to be transferred to the DAO. ## When to use -Reference thesese docs to convert existing community token DAOs to NFT community DAOs - -**`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. -::: +Reference these docs to convert existing community token DAOs to NFT community DAOs ## Configure NFT Voting Plugin From 762550f6dbeb2fa6bd8262da5981beb2ea2e1f0f Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 14:21:09 -0700 Subject: [PATCH 10/13] commit --- docs/DAO-Management/creating-DAOs/bespoke-DAO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md index 9dcc55d..cacdf0f 100644 --- a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md +++ b/docs/DAO-Management/creating-DAOs/bespoke-DAO.md @@ -31,7 +31,7 @@ Realms will provide a governance program ID by default, users can add their own ![multisigformname](https://user-images.githubusercontent.com/22420711/179033113-bfb2f48a-f1c8-403d-9c35-07b3029dbd4c.png) -**Min community tokens to create governance:** this field represents the minimum number of tokens required to by a member to create a governance (e.g. create proposal) +**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. From e08f31563dec67aadefb45f77ded8166ba5610dc Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Fri, 15 Jul 2022 16:50:31 -0700 Subject: [PATCH 11/13] Commit --- docs/DAO-Management/creating-DAOs/Convert-NFT.md | 2 +- docs/DAO-Management/creating-DAOs/VSR.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/DAO-Management/creating-DAOs/VSR.md diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index bbb1152..a863ba8 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -101,4 +101,4 @@ 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. \ No newline at end of file +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/VSR.md b/docs/DAO-Management/creating-DAOs/VSR.md new file mode 100644 index 0000000..3fa38b8 --- /dev/null +++ b/docs/DAO-Management/creating-DAOs/VSR.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 8 +--- + +# Voter Stake Registry \ No newline at end of file From 9f9b7a2a0143face2dc78997f0d8e489fe264b7d Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Tue, 19 Jul 2022 08:37:54 -0700 Subject: [PATCH 12/13] Commit --- .../creating-DAOs/Convert-NFT.md | 4 -- .../creating-DAOs/Voter-Staking-Registry.md | 38 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 docs/DAO-Management/creating-DAOs/Voter-Staking-Registry.md diff --git a/docs/DAO-Management/creating-DAOs/Convert-NFT.md b/docs/DAO-Management/creating-DAOs/Convert-NFT.md index a863ba8..f870a8d 100644 --- a/docs/DAO-Management/creating-DAOs/Convert-NFT.md +++ b/docs/DAO-Management/creating-DAOs/Convert-NFT.md @@ -9,10 +9,6 @@ Any DAO can enable NFT voting through the Plug & Play mechanism of [spl-governan 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. A DAO can also use more advanced scenarios where multiple collections with different voting power are used. 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) + From 2b266b04316645ce83aac211e9b457430613f00f Mon Sep 17 00:00:00 2001 From: harivmasoor Date: Tue, 19 Jul 2022 08:38:04 -0700 Subject: [PATCH 13/13] Commit --- .../creating-DAOs/{bespoke-DAO.md => Community-Token-DAO.md} | 0 docs/DAO-Management/creating-DAOs/VSR.md | 5 ----- 2 files changed, 5 deletions(-) rename docs/DAO-Management/creating-DAOs/{bespoke-DAO.md => Community-Token-DAO.md} (100%) delete mode 100644 docs/DAO-Management/creating-DAOs/VSR.md diff --git a/docs/DAO-Management/creating-DAOs/bespoke-DAO.md b/docs/DAO-Management/creating-DAOs/Community-Token-DAO.md similarity index 100% rename from docs/DAO-Management/creating-DAOs/bespoke-DAO.md rename to docs/DAO-Management/creating-DAOs/Community-Token-DAO.md diff --git a/docs/DAO-Management/creating-DAOs/VSR.md b/docs/DAO-Management/creating-DAOs/VSR.md deleted file mode 100644 index 3fa38b8..0000000 --- a/docs/DAO-Management/creating-DAOs/VSR.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -sidebar_position: 8 ---- - -# Voter Stake Registry \ No newline at end of file