What is a DAO? Decentralized Autonomous Organizations
In this tutorial, you'll learn about What is a DAO? Decentralized Autonomous Organizations. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
What You'll Learn
Understand how DAOs work β decentralized organizations governed by token holders through on-chain voting, with transparent treasuries and no central management.
Why It Matters
DAOs reinvent how people coordinate and make decisions. They enable global, permissionless collaboration without traditional corporate hierarchy.
Real-World Use
Managing a DeFi protocol (Uniswap DAO), funding public goods (Gitcoin), operating a decentralized VC (MetaCartel), or managing a community treasury.
What is a DAO?
A DAO (Decentralized Autonomous Organization) is an organization run by code and token holder votes instead of executives and board meetings.
Traditional Company DAO
ββββββββββββββββββββββ ββββββββββββββββββββββββ
β CEO β β Smart contracts β
β β β β β β
β Board of directorsβ β Token holders vote β
β β β β β β
β Management β β Proposals executed β
β β β β automatically β
β Employees β β ββ by code β
ββββββββββββββββββββββ ββββββββββββββββββββββββ
How a DAO Works
1. Someone creates a proposal (e.g., "Spend 10 ETH on marketing")
β
2. Token holders vote during the voting period
β
3. If proposal passes (quorum + majority), it's queued
β
4. After timelock, anyone can execute it on-chain
β
5. Treasury sends 10 ETH to the marketing wallet
A Simple DAO Contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleDAO {
struct Proposal {
string description;
address recipient;
uint256 amount;
uint256 votesFor;
uint256 votesAgainst;
bool executed;
}
mapping(address => uint256) public shares; // Voting power
Proposal[] public proposals;
mapping(uint256 => mapping(address => bool)) public voted;
function createProposal(string memory desc,
address rec, uint256 amount) public {
proposals.push(Proposal(desc, rec, amount, 0, 0, false));
}
function vote(uint256 proposalId, bool support) public {
require(shares[msg.sender] > 0, "No voting power");
require(!voted[proposalId][msg.sender], "Already voted");
voted[proposalId][msg.sender] = true;
if (support) {
proposals[proposalId].votesFor += shares[msg.sender];
} else {
proposals[proposalId].votesAgainst += shares[msg.sender];
}
}
function execute(uint256 proposalId) public {
Proposal storage p = proposals[proposalId];
require(!p.executed, "Already executed");
require(p.votesFor > p.votesAgainst, "Not passed");
p.executed = true;
payable(p.recipient).transfer(p.amount);
}
}
Governance Tokens
DAOs use governance tokens for voting power:
| Token | DAO | Purpose |
|---|---|---|
| UNI | Uniswap | Protocol governance |
| COMP | Compound | Protocol governance |
| AAVE | Aave | Protocol governance |
| ENS | ENS DAO | Domain name governance |
1 token = 1 vote. Or sometimes quadratic voting or delegation.
Key DAO Tools
| Tool | Purpose |
|---|---|
| Snapshot | Off-chain gasless voting |
| Tally | On-chain governance dashboard |
| Safe (Gnosis) | Multi-sig treasury management |
| Aragon | DAO creation framework |
| Syndicate | Investment DAO platform |
Risks
| Risk | Description |
|---|---|
| Low voter turnout | A few holders control decisions |
| Whale dominance | Large holders sway votes |
| Sybil attacks | Fake identities creating fake votes |
| Governance attacks | Acquiring tokens just to vote maliciously |
| Legal uncertainty | No legal entity status in most jurisdictions |
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro