Xinmin's Blog
AdminRSS
全部AIDeFiSolidity以太坊公链实战区块链行业观察
Admin
RSS

【DAO】从Uniswap学习DAO治理

DeFi·2023年12月4日·1 次阅读·约 13 分钟
© 2026·

自17年学习区块链以来,笔者先后参与开发诸多web3项目,如DeFi借贷、NFT交易平台、链游、IDO、O2C、DAO、版权、Fabric等DAPPs,近期想做些知识沉淀与分享,坚持原创,内容持续更新,欢迎关注我的公众号。

本文主要分享Uniswap是怎样做治理的,读完全文大约需要12分钟。

主要内容有:

从Uniswap学习DAO治理.png

Uniswap作为去中心化交易平台(DEX)的龙头,以创新性的自动做市商(AMM)模式而闻名,推动了DeFi生态的发展与繁荣。学习它的治理具有代表性。

Uniswap的治理范围

治理范围主要包括以下几方面:

  1. 合约的升级部署: Uniswap的协议是由社区来管理的,社区成员可以提出和投票支持关于Uniswap协议升级的提案。这样确保了协议是可以灵活地进行改进和演变的。
  2. 社区基金的使用: Uniswap社区拥有治理代币UNI,可以用于投票决定社区基金的使用方式。社区基金用于支持Uniswap生态系统的发展,包括项目的开发、安全审计、市场推广等方面。
  3. 合约参数的修改: 社区成员有权提出关于合约参数的修改提案,这包括手续费率、奖励分配等。这使得Uniswap的运营参数能够适应市场需求和用户反馈。
  4. 社区提案的审议: 除了直接影响协议的变更,社区还可以提出各种提案,如调整治理流程、增加新的功能等。这些提案经过社区的讨论和投票后,可以被采纳或拒绝。

以上治理范围也代表了绝大多数DAPPs的治理需求,本文以合约的升级部署为例。

Uniswap的治理流程

治理角色

为了便于上下文的理解,我们先了解一下在治理中都有哪些角色。

总共有6个角色:

  • 投票人(委托人,也即全体持币人)
  • 提案发起人(代理人)
  • 智能合约
  • 程序员
  • 社区论坛管理员
  • 审计员

投票人可以把手中的票数(token数量)委托给提案发起人(让其有资格发起提案),也可以委托给其他投票人代为投票。 链上治理主要是在智能合约中完成,程序员辅助治理编码,社区论坛管理员负责提案的整理与归档,审计员主要对治理编码进行安全审计。

治理流程

包括:

  • 1、温度检查
  • 2、共识检查
  • 3、治理提案
  • 4、执行提案

整个流程按链下和链上划分又可分为:链下治理、链上治理。链下治理阶段包括温度检查、共识检查;链上治理阶段包括治理提案、执行提案。

1、温度检查

“愿嘤鸣以求友,敢步将伯之呼”,提案发起人通过论坛发帖+Discord+社区电话会议+Twitter Space等方式,使提案获得一些关注和支持。

或者我们可以称之为民意调查,看看大家有没有足够的意愿来改变现状,是一种非正式讨论。

Uniswap的温度检查时间为3天,参与形式是委托token,单账户1,000 uni起,达到25,000 uni赞成票才算有效。

2、共识检查

在社区有一定人响应的情况下,开始正式讨论(有种SEC听证会的感觉,回答选民的质疑),投第二次票。

Uniswap的共识检查时间为5天,参与形式是委托token,单账户1,000 uni起,达到50,000 uni赞成票才算有效。

在Snapshot(一个开源平台,下文再介绍)发起链下投票,用户对投票进行签名,投票结果以json格式的文件存放在IPFS网络中。

3、治理提案

部署治理合约,在合约中创建提案,在链上进行正式投票。

当话题创建者确认得到了社区支持者非正式的支持后,再发出请求,以创建一个相应的链上治理轮询,从而实现治理从链下到链上的迁移。

Uniswap发起治理提案的门槛是:提案发起人被委托250万uni才能发起提案。

提案发起人需要提前准备好要执行的合约编码,在社区公示,合约编码最多支持10组calldata的调用。合约编码需要做安全审计,费用由社区报销;然后由提案发起人调用治理合约创建提案,正式进入投票期,一般为7天(按以太坊15秒一个区块来算,大约40,320个区块)

提案有效的条件是:赞成 > 反对 ,赞成票 >= 4000万。这里设置了一个最低门槛,避免赞成和反对票相差太悬殊,也是为了治理安全而设计。uni的总发行量为10亿,4000万即4%。

4、执行提案

在提案得到通过后,意味着即将要执行的链上修改指令被注入到一个TimeLock的合约中,开始进入一个公示等待期(Time lock),一般为2~30天,这个期间仍然可以反悔中止提案,避免治理攻击。

所有的合约参数设置都是支持治理流程管理的,只需发起发一个新提案并获得通过,如修改上面的公示等待期。

回顾以上流程,我们不禁会发问:为什么不直接发起治理提案呢?个人认为之所以有温度检查和共识检查两个环节,目的有两个: (1)调查民意;(2)让提案保持足够的曝光度。

从Snapshot解读链下治理

Snapshot 是一个为ERC20代币提供提案与投票的链下治理平台。由Balancer Labs开发。

后端技术栈:IPFS + GraphQL + 数据库

前端技术栈:Vue + TypeScript + Metamask签名授权

Snapshot的主要功能

  • 发起提案
  • 投票

Snapshot的特点

  • 1、链下发起提案与投票,无质押,无GAS消耗;
  • 2、IPFS存储提案信息、用户投票签名;
  • 3、项目完全开源;
  • 4、团队称不发token,靠社区捐赠,不做营销。

snapshot最大的好处就是不用gas费来发起提案和投票,而且它的提案和投票结果是可信的。

为什么snapshot是可信的?

snapshot保证了投票全过程是不可篡改的,投票内容是永久存储的:用户对投票信息进行签名,投票结果永久存放在IPFS网络,投票结果是可以被验证的。

为什么snapshot只提供链下治理?

snapshot完全有能力提供链下+链上整套治理服务,之所以只提供链下治理,个人认为出于以下两点考虑: (1)每个项目的需求都不一样,治理的规则也不完全一样,链上治理的合约也不一样; (2)投票结果存在争议时,snapshot没有仲裁机构,它想保持轻量,仲裁部分由具体项目去实现。

Snapshot的使用者

使用案例.png

从Uniswap合约解读链上治理

主要合约

  • UNI Token
  • Governor
  • Timelock

UNI Token即token合约,包括余额快照、委托等功能;Governor即治理主合约,包括发起提案、投票等功能;Timelock即时间锁合约,包括锁定即将要执行的提案、执行提案等功能。

治理规则

在以上治理流程中已经说明了,略

提案格式

一个提案包括以下内容:

  • 提案ID
  • 提案发起人账号地址
  • 提案执行时间戳
  • 提案编码内容(合约地址[],msg.vaule[],方法名[],参数[])
  • 开始投票区块 / 结束投票区块
  • 赞成票数 / 反对票数
  • 是否已执行 / 已作废
  • 全员投票记录(投票账号,是否支持,票数)——透明性、可验证

提案的生命周期

人人都可以发起提案,人人都可以撤销提案。

提案生命周期.png

提案有8个状态:

Pending      // 提案未开始
Active       // 提案已激活
Canceled     // 提案已作废
Defeated     // 提案投票已否决
Succeeded    // 提案投票已成功
Queued       // 提案执行排队中
Expired      // 提案已到期
Executed     // 提案已经执行

执行提案

已通过的提案在公示期结束后,调用以下合约方法执行提案(人人都可以去触发):

function executeTransaction(address target, uint256 value, string memory signature, bytes memory data, uint256 eta) external override payable returns (bytes memory)
{
        ......
        (bool success, bytes memory returnData)
      = target.call{value: value}(callData);
        ......
}

执行时长为 14 天,如果超时了,则不能再执行,但可以取消执行。

从提案的发起到执行,正常效率为 9 天。 提案在被执行前,随时都可以撤销提案,确保了治理的安全性。

总结一下

通过学习,我们了解到Uniswap的治理分为链下+链上治理两部分,借助Snapshot等工具,通过链下的温度检查、共识检查两个环节来调查民意,曝光提案内容,提高了提案的成功率,避免了失败提案带来的成本浪费;通过链上智能合约完成提案的发起、投票、公示、执行落地,尽量地避免了治理攻击。

思考题

DAO的优点是公平、公正、自由,群策群力,过程公开透明,相对安全。但面临的挑战也有很多:智能合约的安全性问题、参与度不足问题、权力集中在巨鲸手中、决策效率问题。

通过以上的学习,Uniswap又是如何去平衡和解决这些问题的呢?DAO适合所有应用场景吗?下一篇文章我将分享对DAO的思考。


以上就是本文的全部内容,如有问题欢迎在公众号中留言。

扩展阅读

  • 治理DEMO演示
  • Compound中的治理合约示例
  • Snapshot官网
  • Snapshot的仓库地址
  • 怎样在Snapshot申请治理空间

以上扩展阅读内容已经转发在我的知识星球,可扫码阅读。


欢迎关注我的公众号“web3-notes”,一起拥抱 web3 世界。

继续阅读

基于全文检索与主题相似度

DeFi2025年6月4日

开发完借贷协议后,我终于看懂了Uniswap DAO治理

说在前面 2021年开发Xai-Maker借贷协议时,我们遇到了一个让整个团队头疼的问题:谁来决定借贷利率? 传统金融里,这种事银行说了算。但在DeFi的世界,如果让项目方单方面控制利率,用户凭什么信任你?如果完全放任市场,万一出现极端情况怎么办?经过调研,我把目光投向了Uniswap——这个管理着

DeFi2025年6月12日

Uniswap v1到v4的进化之路:面试官最爱问的技术要点

说在前面 作为一个在Web3领域深耕多年的开发者,我经常被面试官问到Uniswap各个版本之间的区别。 今天,我想用最直白的方式,带你理解Uniswap从v1到v4的核心变化,让你在面对相关问题时能够条理清晰地回答。 核心区别一览 先给你一个全局视角,Uniswap四个版本的关键变化: - v1:开

DeFi2025年5月30日

Uniswap V3最优路径算法全解:别再傻傻直接换币了

在区块链的世界里,DEX的效率,说白了,直接决定了你交易时能不能“多省点、多赚点”。你有没有遇到过这种情况:在Uniswap V3上把 ETH换成USDC,有时候直接兑换就挺划算的,有时候却发现绕个弯,比如先换成WBTC,再换成USDC,反而能多拿一点? 这可不是巧合,而是一套精心设计的最优路径查找