Skip to content

Verified Human DAOs - 1 human = 1 vote governance #34

@het4rk

Description

@het4rk

Product Requirements (PRD)

Problem

DAO governance is broken - whoever has the most tokens wins. Plutocracy dressed as democracy. 1 human = 1 vote changes the game entirely.

Solution

Governance system where each World ID-verified member gets exactly 1 vote regardless of token holdings. Extends Arkora's existing poll infrastructure.

Features

  • Proposal Creation - any member above karma threshold can propose
  • Voting - 1 human = 1 vote, time-limited, quorum requirements
  • Delegation - delegate your vote to another verified human (transparent, revocable)
  • Treasury Proposals - propose spending from shared treasury
  • Execution - approved proposals auto-execute onchain (for onchain actions)

Revenue

  • Free for small DAOs (< 100 members)
  • Pro ($19/mo): unlimited members, treasury management, analytics

Technical Requirements (TRD)

New Schema

CREATE TABLE daos (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  description TEXT,
  creatorHash TEXT NOT NULL,
  memberCount INTEGER DEFAULT 0,
  quorumPercent INTEGER DEFAULT 51,
  proposalThresholdKarma INTEGER DEFAULT 10,
  createdAt TIMESTAMP DEFAULT NOW()
);

CREATE TABLE dao_members (
  daoId UUID REFERENCES daos(id),
  nullifierHash TEXT NOT NULL,
  role TEXT DEFAULT 'member', -- 'admin', 'member'
  delegatedTo TEXT, -- nullifierHash of delegate
  joinedAt TIMESTAMP DEFAULT NOW(),
  UNIQUE(daoId, nullifierHash)
);

CREATE TABLE dao_proposals (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  daoId UUID REFERENCES daos(id),
  proposerHash TEXT NOT NULL,
  title TEXT NOT NULL,
  body TEXT,
  type TEXT DEFAULT 'signal', -- 'signal', 'treasury', 'parameter'
  status TEXT DEFAULT 'active', -- 'active', 'passed', 'rejected', 'executed'
  yesVotes INTEGER DEFAULT 0,
  noVotes INTEGER DEFAULT 0,
  abstainVotes INTEGER DEFAULT 0,
  endsAt TIMESTAMP NOT NULL,
  createdAt TIMESTAMP DEFAULT NOW()
);

CREATE TABLE dao_votes (
  proposalId UUID REFERENCES dao_proposals(id),
  nullifierHash TEXT NOT NULL,
  vote TEXT NOT NULL, -- 'yes', 'no', 'abstain'
  isDelegated BOOLEAN DEFAULT FALSE,
  UNIQUE(proposalId, nullifierHash)
);

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions