How to Solana — Chapter 5: DAOs & Governance

Ryze Labs
8 min readDec 3, 2021

--

Background

As Vitalik noted as early as 2013 in the Ethereum whitepaper; “another — arguably more important — part of the Bitcoin experiment is the underlying blockchain technology as a tool of distributed consensus”, with Ethereum providing the framework and turing-complete programming language to create smart contracts. Examples of applications that could be built using such smart contracts, Vitalik explained, may include custom currencies and financial instruments, non fungible assets and even blockchain based decentralized autonomous organizations. Since then DAO popularity has exploded, with people from around the world joining together, anonymously, for a common goal, using on-chain governance to ensure fair and open decision making.

In this chapter we will give a basic introduction to what exactly a DAO is and why governance is important. We will then discuss an essential developer package called spl_governance. Finally for beginners who may not have the developing experience to create their own fully fledged DAO from scratch, we will finish up with a tutorial on how to use Squads DAO.

What is a DAO?

A DAO, or decentralized autonomous organization, has been described in a variety of different ways, from “an internet community with a shared bank account” and “the ultimate combination of capitalism and progressivism”, to effectively a decentralized LLC which is basically “nothing more than people and contracts all the way down”. In its essence, a DAO is an organization represented by smart contracts on the blockchain, as opposed to physical contracts in a filing cabinet, which is controlled by all DAO members and free of control by a central government. The rules of a DAO are pre-agreed and transparent and can only be changed by consent of DAO members.

How Governance works

Every decision within the DAO is pitched, discussed, voted on and documented publicly, usually via open forums like with Mango Markets and Jet Protocol. Many topics like UI/UX improvements, features wishlist etc can usually be debated openly by community members, users or even fans of the protocol. However when it comes to decisions that require updating the smart contracts on the blockchain, on-chain governance systems are in place to ensure that only DAO members, usually “governance token” holders, have the final say on updates to the system. This usually requires connecting your wallet to show your DAO token credentials, as you can see in Mango’s DAO proposals page. Proposals will have a list of parameters like the duration the proposal is open for voting, its yes vote threshold, the number of tokens needed to make a new proposal etc. Specifics on protocol governance vary by protocol. Some require:

  • A quorum of voters for a vote to be valid.
  • Voter tokens to be locked up for a period of months following a major proposal to ensure any bad actors who vote for negative effects can be punished by the following drop in token price.
  • Proof that certain stakeholders, e.g. validators or developers, have voted.
  • Voters express how strongly they feel about an issue rather than just whether they are in favor of it or opposed to it. This is known as quadratic voting.

Governance is an incredibly important part of any decentralized organization, it ensures longevity of the project and promotes constant feedback and development. It gives voices to users and can ensure stakeholders remain incentivized to work on the project. There are many things to consider when creating a DAO and ensuring effective governance, including the type of vote (support/reject vs quadratic), on-chain vs off-chain voting, requirements for a quorum as well as incentivising voter participation. For an interesting read on some problems and solutions in governance out in the wild, read this article by crypto researcher Leopold Bosankic.

What is spl-governance?

Before we dive into a Squads DAO tutorial, which is a GUI for users to have a simple DAO up and running in minutes, we should mention the ‘spl-governance’ module. It is a rust package providing a full framework for DAO creation. It is used by developers to build advanced and customized DAOs from scratch. While a step by step creation wizard is useful for beginners and for DAOs with simple functionality, spl-governance is an essential toolkit for devs seeking advanced functionality like relinquish_vote() to opt out of a proposal vote and set_governance_delegate() to allow others to vote on your behalf. For more info visit https://docs.rs/spl-governance/latest/spl_governance/.

Let’s DAO this

While the governance and structure of your DAO requires a lot of thought and customization, and is often an ongoing, living and breathing process, there are frameworks out there to help bootstrap your DAO to get things off the ground. While the DAO tooling ecosystem on Solana is relatively nascent compared to Ethereum, there are some options available that will continue to expand services in the future. Alongside Grape Protocol for decentralized social networks, there are full stack DAO frameworks like Squads DAO that help with getting a basic DAO up and running, allowing configuration of initial voting and governance structures. At the moment, Grape is focusing on gated communities on discord, however as decentralized teams grow in number and their requirements increase in complexity, it will be interesting to see how this protocol develops in porting Web 3 concepts over to Web 2 apps like discord, particularly with the recent interlacing of NFTs, profile pictures, online identity, DAO membership, community rank and social sub groups.

Now, let’s make a DAO. Let’s dive into Squads.

1. Head over to Squads (https://sqds.io/)

At the moment only basic NFT based governance and community gating is available on mainnet. We will be going through the Full stack Squad generator on devnet in anticipation of a future launch.

2. Launch the full stack generator and connect your wallet.

3. Click the “Faucet” button then “Create Squad”

The faucet will send 2 devnet Solana to your wallet to pay for test transactions.

Let’s enter our Squad details. The purpose of our DAO will be to buy Greenland, rename it to Cryptoland and run the economy on Solana.

Enter your DAO name, token ticker, DAO description and initial amount. Hover over “?” for details.

Click Next.

4. Choose how to allocate tokens.

As this is a test DAO with a limited number of initial wallets, we’ll choose “Allocation by members”.

5. Create our voting rules.

For our paradise of Cryptoland, we want to be an inclusive democracy. A quorum of 60% of all token holders must vote for the vote to be valid, with a simple majority of 31% “for” a vote needed to pass. Finally we define someone with 10% or more of token supply as a Core Member.

6. Add initial members to your Squad

Here we can add the public keys of members we would like in our founding team. We can allocate what percentage they get of total or can enter the exact token amount here. At the risk of being imposing tyranny from the get go, we will leave initial members as default of one and continue.

7. Review and confirm

Confirm all the information is correct then deploy your DAO. Confirm the transaction via your wallet.

8. Codify your plans.

With your DAO deployed you can add features. Let’s make a proposal. Click “New Proposal”

Enter the details of your proposal, its start and end date as well as the options you will give voters.

At the moment only single choice voting is available, however there will likely be multiple choice and quadratic voting features in the future.

Click “Propose” when finished and confirm with the wallet transaction.

You will be shown a summary of the live proposal, and it will be listed on the main proposals page.

9. Edit members

Under the members section you can add and remove members. As I am logged in with my wallet, I can also choose to quit.

10. Fund the DAO

Under the vault section we can show the total funds we have for our endeavor. We can sell tokens to raise money, deposit directly and send to other wallets for services rendered.

For vault security, no one person can freely send money to another address. Any request to send will be submitted as a proposal.

After depositing 1 SOL from my own wallet that I received from the faucet, I realized that I only meant to send 0.5, thus I make a proposal to send 0.5 back.

After confirming the wallet transaction, we see the proposal details and can vote now if we wish.

It has also been added to the main list of proposals.

11. Democratize.

Instead of adding arbitrary proposals, we have the option of chatting with other members via integration with Grape. Here we can hash out plans and proposals, as well as debate existing proposals, future plans, spending etc.

12. View DAO information.

In the info tab we can see basic DAO information like number of members, voting details (which we can propose be changed depending on voter participation), treasury / vault address etc.

Conclusion

In this chapter we gave an overview of what DAOs are and the importance of governance therein. We walked through the Squads DAO interface and created our own DAO. As time goes on we can add members, change voting requirements, add to our vault, debate proposals and start spending, all in a trustless, decentralized and transparent manner. Given the fast execution and low cost of Solana, DAO creation and interaction has never been easier. People have come together to buy constitutions and Wu-Tang albums, managed billions of dollars in swap transactions and created stablecoins. What will DAOs do in the future? That’s up to you to decide.

Reference protocols

  1. Squads DAO [Devnet, Mainnet] [Solana]: Full stack DAO creation and management framework.
  2. Grape Protocol [Mainnet] [Solana]: Allows permissioned gating and management of decentralized communities.

--

--