Phase 92 — DAO治理2.0设计
版本: v4.2.0 创建日期: 2026-03-10 状态: ✅ 已实现 (v4.2.0)
一、模块概述
Phase 92 将DAO治理升级至2.0版本,引入二次方投票(Quadratic Voting)、投票权委托、国库管理和完整的提案生命周期(Draft → Active → Queue → Execute)。实现更公平、更高效的去中心化治理,防止大户垄断投票权,保障社区利益。
1.1 核心目标
- 二次方投票: 投票成本随票数二次增长(n票花费n²代币),平衡大小持有者话语权
- 投票权委托: 支持投票权委托给信任代表,可随时撤回,支持多级委托链
- 国库管理: DAO国库的资金管理、预算分配和支出审计
- 提案生命周期: Draft → Active → Queue → Execute 四阶段,含时间锁和仲裁机制
1.2 技术架构
┌──────────────────────────────────────────────────────────┐
│ DAO Governance v2.0 (Phase 92) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Proposal Lifecycle │ │
│ │ [Draft] → [Active] → [Queue] → [Execute] │ │
│ │ ↓ ↓ ↓ ↓ │ │
│ │ 起草 投票中 时间锁 自动执行 │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌─────────────────────┐ ┌───────────────────────────┐ │
│ │ QuadraticVoting │ │ DelegationEngine │ │
│ │ 二次方成本计算 │ │ 委托链管理 │ │
│ │ 反女巫攻击 │ │ 权重计算+撤回 │ │
│ └─────────────────────┘ └───────────────────────────┘ │
│ ┌─────────────────────┐ ┌───────────────────────────┐ │
│ │ TreasuryManager │ │ GovernanceStats │ │
│ │ 资金池+预算分配 │ │ 参与率+提案分析 │ │
│ │ 支出审计+报告 │ │ 投票分布+委托图谱 │ │
│ └─────────────────────┘ └───────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ DAO v2.0 IPC Layer (8 handlers) │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘二、核心模块设计
2.1 DAOGovernanceV2 (blockchain/dao-governance-v2.js)
DAO治理2.0核心模块。
常量:
PROPOSAL_STATUS: DRAFT, ACTIVE, QUEUE, EXECUTE, PASSED, REJECTED, CANCELLEDVOTE_TYPE: FOR, AGAINST, ABSTAINDELEGATION_STATUS: ACTIVE, REVOKED, EXPIREDTREASURY_TX_TYPE: ALLOCATION, WITHDRAWAL, REFUND, REWARD
核心方法:
initialize()— 初始化DAO治理,加载活跃提案和国库状态createProposal({ title, description, proposerDid, type, actions, votingDurationMs })— 创建治理提案(状态初始为DRAFT,需激活后进入投票)vote({ proposalId, voterDid, voteType, voteCount })— 二次方投票(n票花费n²代币,自动校验余额和反女巫)delegate({ fromDid, toDid, weight, expiresAt })— 委托投票权(支持部分委托,检测循环委托)execute(proposalId)— 执行通过Queue阶段的提案(自动执行关联动作)getTreasury()— 获取国库状态(总余额、各资产明细、待执行拨款、近期支出)allocateFunds({ proposalId, recipient, amount, asset, memo })— 从国库拨款(需关联已通过的提案)getGovernanceStats()— 治理统计(总提案数、参与率、平均投票数、委托覆盖率、国库健康度)configure({ votingDuration, quorumPercentage, timelockMs, quadraticEnabled })— 配置治理参数
三、核心文件
| 文件路径 | 说明 |
|---|---|
src/main/blockchain/dao-governance-v2.js | DAO治理2.0核心(二次方投票、委托、国库、提案生命周期) |
src/main/blockchain/dao-v2-ipc.js | IPC接口层(8个handler) |
src/renderer/stores/daoGovernanceV2.ts | Pinia Store — 提案列表、投票记录、委托关系、国库状态 |
src/renderer/pages/DAOGovernanceV2Page.vue | 前端页面 — 提案管理/投票/委托/国库/统计 |
四、数据库设计
sql
-- Phase 92: DAO v2.0 Proposals
CREATE TABLE IF NOT EXISTS dao_v2_proposals (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
proposer_did TEXT NOT NULL,
type TEXT DEFAULT 'standard',
status TEXT DEFAULT 'draft',
actions TEXT,
votes_for INTEGER DEFAULT 0,
votes_against INTEGER DEFAULT 0,
votes_abstain INTEGER DEFAULT 0,
quadratic_weight_for REAL DEFAULT 0.0,
quadratic_weight_against REAL DEFAULT 0.0,
quorum_reached INTEGER DEFAULT 0,
voting_start INTEGER,
voting_end INTEGER,
queue_end INTEGER,
executed_at INTEGER,
cancelled_at INTEGER,
created_at INTEGER,
updated_at INTEGER
);
-- Phase 92: DAO v2.0 Votes
CREATE TABLE IF NOT EXISTS dao_v2_votes (
id TEXT PRIMARY KEY,
proposal_id TEXT NOT NULL,
voter_did TEXT NOT NULL,
vote_type TEXT NOT NULL,
vote_count INTEGER DEFAULT 1,
quadratic_cost INTEGER,
delegated_from TEXT,
reason TEXT,
created_at INTEGER,
FOREIGN KEY (proposal_id) REFERENCES dao_v2_proposals(id),
UNIQUE(proposal_id, voter_did)
);
-- Phase 92: DAO v2.0 Treasury
CREATE TABLE IF NOT EXISTS dao_v2_treasury (
id TEXT PRIMARY KEY,
tx_type TEXT NOT NULL,
proposal_id TEXT,
recipient TEXT,
amount REAL NOT NULL,
asset TEXT DEFAULT 'native',
memo TEXT,
balance_after REAL,
executed_by TEXT,
created_at INTEGER,
FOREIGN KEY (proposal_id) REFERENCES dao_v2_proposals(id)
);五、IPC接口设计
DAO v2.0 IPC (8 handlers)
| 通道 | 说明 |
|---|---|
dao:create-proposal | 创建治理提案 |
dao:vote | 二次方投票 |
dao:delegate | 委托投票权 |
dao:execute | 执行提案 |
dao:get-treasury | 获取国库状态 |
dao:allocate-funds | 国库拨款 |
dao:get-governance-stats | 治理统计 |
dao:configure | 配置治理参数 |
六、前端集成
Pinia Store
daoGovernanceV2.ts— 提案列表、投票记录、委托关系、国库余额、治理统计
Vue Page
DAOGovernanceV2Page.vue— 提案生命周期/二次方投票/委托管理/国库面板/治理统计
Route
/dao-governance-v2— DAO治理2.0
七、配置选项
javascript
daoGovernanceV2: {
enabled: false,
quadraticVotingEnabled: true,
delegationEnabled: true,
maxDelegationDepth: 3,
votingDurationMs: 604800000,
timelockMs: 172800000,
quorumPercentage: 10,
proposalThreshold: 100,
treasuryConfig: {
maxSingleAllocation: 100000,
approvalThreshold: 2,
auditIntervalMs: 2592000000,
},
},八、测试覆盖
- 测试文件:
src/main/blockchain/__tests__/dao-governance-v2.test.js - 测试数量: 21 tests
- 覆盖范围:
- 提案生命周期(创建Draft/激活Active/进入Queue/执行Execute/取消)
- 二次方投票(成本计算验证/余额不足/反女巫/投票统计)
- 投票权委托(单级委托/多级委托/循环检测/撤回/过期)
- 国库管理(余额查询/拨款/无提案拨款拒绝/余额不足)
- 提案执行(时间锁校验/未达法定人数/已执行重复执行)
- 治理统计(参与率/投票分布/委托覆盖率/国库健康度)
- 配置更新(参数校验/运行中修改限制)
九、Context Engineering
- step 5.5:
setDAOGovernanceV2Context()— 注入DAO治理2.0上下文
