Free DAO Smart Contract Template - Governance Voting (Solidity)

Free DAO Smart Contract Template - Governance Voting (Solidity)

DevTools Store

Free DAO Governance Template (Solidity)

Simple DAO with proposals, voting, and execution. Token-weighted voting.

pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";

contract SimpleDAO is Ownable {
    struct Proposal {
        uint256 id;
        address proposer;
        string description;
        uint256 voteCount;
        uint256 againstCount;
        uint256 deadline;
        bool executed;
    }
    mapping(address => uint256) public votingPower;
    mapping(uint256 => Proposal) public proposals;
    mapping(uint256 => mapping(address => bool)) public hasVoted;
    uint256 public proposalCount;
    uint256 public votingPeriod = 3 days;

    function createProposal(string calldata desc) external returns (uint256) {
        require(votingPower[msg.sender] > 0);
        proposalCount++;
        proposals[proposalCount] = Proposal(
            proposalCount, msg.sender, desc, 0, 0,
            block.timestamp + votingPeriod, false
        );
        return proposalCount;
    }

    function vote(uint256 id, bool support) external {
        require(block.timestamp < proposals[id].deadline);
        require(!hasVoted[id][msg.sender]);
        require(votingPower[msg.sender] > 0);
        hasVoted[id][msg.sender] = true;
        if (support) proposals[id].voteCount += votingPower[msg.sender];
        else proposals[id].againstCount += votingPower[msg.sender];
    }
}

Full DAO with execution, timelock, deploy scripts, React UI: https://rentry.co/w9gngnqt ($1+)

Report Page