自17年学习区块链以来,笔者先后参与开发诸多web3项目,如DeFi借贷、NFT交易平台、链游、IDO、O2C、DAO、版权、Fabric等DAPPs,近期想做些知识沉淀与分享,坚持原创,内容持续更新,欢迎关注我的公众号。
本文主要分享Uniswap是怎样做治理的,读完全文大约需要12分钟。
主要内容有:

Uniswap作为去中心化交易平台(DEX)的龙头,以创新性的自动做市商(AMM)模式而闻名,推动了DeFi生态的发展与繁荣。学习它的治理具有代表性。
治理范围主要包括以下几方面:
以上治理范围也代表了绝大多数DAPPs的治理需求,本文以合约的升级部署为例。
为了便于上下文的理解,我们先了解一下在治理中都有哪些角色。
总共有6个角色:
投票人可以把手中的票数(token数量)委托给提案发起人(让其有资格发起提案),也可以委托给其他投票人代为投票。 链上治理主要是在智能合约中完成,程序员辅助治理编码,社区论坛管理员负责提案的整理与归档,审计员主要对治理编码进行安全审计。
包括:
整个流程按链下和链上划分又可分为:链下治理、链上治理。链下治理阶段包括温度检查、共识检查;链上治理阶段包括治理提案、执行提案。
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 是一个为ERC20代币提供提案与投票的链下治理平台。由Balancer Labs开发。
后端技术栈:IPFS + GraphQL + 数据库
前端技术栈:Vue + TypeScript + Metamask签名授权
snapshot最大的好处就是不用gas费来发起提案和投票,而且它的提案和投票结果是可信的。
为什么snapshot是可信的?
snapshot保证了投票全过程是不可篡改的,投票内容是永久存储的:用户对投票信息进行签名,投票结果永久存放在IPFS网络,投票结果是可以被验证的。
为什么snapshot只提供链下治理?
snapshot完全有能力提供链下+链上整套治理服务,之所以只提供链下治理,个人认为出于以下两点考虑: (1)每个项目的需求都不一样,治理的规则也不完全一样,链上治理的合约也不一样; (2)投票结果存在争议时,snapshot没有仲裁机构,它想保持轻量,仲裁部分由具体项目去实现。

UNI Token即token合约,包括余额快照、委托等功能;Governor即治理主合约,包括发起提案、投票等功能;Timelock即时间锁合约,包括锁定即将要执行的提案、执行提案等功能。
在以上治理流程中已经说明了,略
一个提案包括以下内容:
人人都可以发起提案,人人都可以撤销提案。

提案有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的思考。
以上就是本文的全部内容,如有问题欢迎在公众号中留言。
以上扩展阅读内容已经转发在我的知识星球,可扫码阅读。
欢迎关注我的公众号“web3-notes”,一起拥抱 web3 世界。
基于全文检索与主题相似度
说在前面 2021年开发Xai-Maker借贷协议时,我们遇到了一个让整个团队头疼的问题:谁来决定借贷利率? 传统金融里,这种事银行说了算。但在DeFi的世界,如果让项目方单方面控制利率,用户凭什么信任你?如果完全放任市场,万一出现极端情况怎么办?经过调研,我把目光投向了Uniswap——这个管理着
说在前面 作为一个在Web3领域深耕多年的开发者,我经常被面试官问到Uniswap各个版本之间的区别。 今天,我想用最直白的方式,带你理解Uniswap从v1到v4的核心变化,让你在面对相关问题时能够条理清晰地回答。 核心区别一览 先给你一个全局视角,Uniswap四个版本的关键变化: - v1:开
在区块链的世界里,DEX的效率,说白了,直接决定了你交易时能不能“多省点、多赚点”。你有没有遇到过这种情况:在Uniswap V3上把 ETH换成USDC,有时候直接兑换就挺划算的,有时候却发现绕个弯,比如先换成WBTC,再换成USDC,反而能多拿一点? 这可不是巧合,而是一套精心设计的最优路径查找