“Rage Quit”(“愤怒退出”),在 DAO 领域被简称为“怒退”,曾是一个相对较小众的概念。随着 DAO 的发展,越来越多的 DAO 开始面临分叉、创始人出走、甚至清盘的状况,使得“愤怒退出”这一词汇逐渐频繁地出现在各种报道中。
但值得注意的是大家对“愤怒退出”的理解存在很大的误区,连一些国外专业媒体也经常误用。
起源
2019 年以太坊丹佛大会上,Ameen Soleimani 和他的同事们一起发布了 Moloch v1 - 一个用于创建捐赠型 DAO 的协议。相比 Aragon 等复杂的 DAO 操作系统,Molochv1 协议的核心只有 400 多行代码。它简洁,优雅,易于理解和使用,可以让人们非常方便的把资金汇集到一起并集体管理和协调资金的使用。
在 DAO 的治理中,少数意见总是无法避免的。通常,决策和事务执行都遵循“少数服从多数”的原则。但这也带来了风险:当多数派掌握了决策权时,可能会滥用其优势,侵犯少数派的利益。为了预防这种风险,Moloch 协议引入了“Rage Quit”这一概念。
如何“愤怒退出”?
当一个成员反对某提案,即使他们投了反对票,提案还是有可能通过。在 Moloch 协议中,提案从投票通过到真正被执行之间存在一个 7 天的宽限期。在宽限期内,投了反对票的成员如果不希望自己的资金被用于该项目,可以选择“愤怒退出”。从而在提案执行之前将自己在合约中的剩余权益取回。
“愤怒退出”并非任意时刻都能进行,这里列出了几个关键特征:
“愤怒退出”由智能合约代码进行强制约束。
只有在上一个提案中投过反对票的成员才有资格执行“愤怒退出”。
“愤怒退出”只能在提案已经获得通过,但尚未执行的宽限期内进行。
成员退出时,仅能取回其在合约中剩余的份额。
( 例如,如果一开始投资了 100 个 ETH,而财库中的 30% 已经被使用,那么成员只能取回 70 个 ETH。)
这里还有一个隐形的前提,成员需要对于 DAO 的财库有着直接的,可追溯的历史投入。只有这样才能从合约代码层面上去公平的确认剩余权益,让成员实现退出。换句话说,如果一个成员根本没往 DAO 财库里放过钱,那是不存在“愤怒退出”这一说的,就算代码写了出来,也执行不了。
一个有趣的冷知识,在 Moloch V1 协议里,为了追求协议的足够简单和安全,”怒退”是从协议里抽取资金的唯一方法。也就是说被资助的项目方为了拿到资助的资金,也只能通过执行“愤怒退出”来提取资金,即使他们即不愤怒,也不想退出。
进化
Moloch v1 协议取得了显著的成功,但其功能仅限于协调捐款,使用范围较窄。因此,众多团队在 Moloch v1 的基础上进行迭代,推出了 Moloch v2。这个新版本主要增加了一系列功能,使其能够支持共同投资,进而开辟了更广泛的商业领域。
随着合约功能的完善和合规框架的完成,Moloch V2 引发了一股 Investment DAO 的热潮, The LAO、Flamingo、MetaCartel 是其中的佼佼者,后期甚至形成了专门投资 Investment DAO 的 Investment DAO。到现在,Investment DAO 已经成为 Web3 投资市场里不可忽视的一股力量,有很多 Investment DAO 的触角已经进入了传统投资领域里,投到了 Stability AI 等优秀项目。
扯远了,说回到 Rage Quit。基于 MolochV2 框架及变种搭建的这类投资 DAO,自然也都是支持”怒退”的,但情况跟之前比复杂了很多。V1 是捐赠协议,已经捐出去的就是撒出去了,即使退出成员也无法对已经捐赠出去的钱做什么要求,所以”怒退”可以非常简单的把还没捐出去的那部分拿回来就可以。但 v2 是投资协议,已经投出去的钱换成了股权或者 Token 权益,是要等着回报的,这部分权益肯定不能因为”怒退”而作废。于是就要涉及历史权益的确认和拆分。因此我们可以看到”怒退”从 v2 开始无论是代码还是细节,都相较 v1 复杂了不少,且有了一些变化。具体细节就不细讲了,在不同的协议和变种中,多有所差别,大家心里有这个概念就好。
综上所述,“愤怒退出”的主要用途是泛捐赠 / 投资类型的 DAO 保护成员的一个武器。它最核心的功能是让成员通过销毁在 DAO 里的份额把财库里属于自己的剩余资金取回。
因愤怒而退出每天都在发生,但这并不是“愤怒退出”
对于绝大多数 DAO 而言,他们的结构和运作方式并不满足实行“愤怒退出”的基本条件。许多 DAO 的成员并没有直接向其财库注入资金,因此 DAO 的成员资格与财库余额并无直接联系,所以“愤怒退出”的适用场景相当有限。
其实很容易理解,考虑一个公司,如果一个员工因不满而辞职,即便他曾被授予股票期权或持有公司股份,他也没有资格在离开时提取公司的资金。同理,一个股东购买了茅台的股票后,发现茅台开始生产酒心巧克力,他很愤怒,决定退出,这时他可以选择在股市上卖出股票,但不能要求将股票退还给茅台并按比例获取公司的现金。
我们确实在 DAO 中看到过创始人自己提议“愤怒退出”。但这种“怒退”更多地是形式上的,仅仅是一个名称,实际上是各方协商的结果。除非创始人的权益与 DAO 的财库中的资金有明确的对应关系或约定,否则他在退出时也并没有资格提取资金。
Nouns DAO 则是个特例,它曾经经历了一次分叉,分叉后的新合约支持了“愤怒退出”功能。其操作模式与原始的“愤怒退出”概念大致相符,只是具体的执行细节有所调整。Nouns DAO 可以这么做主要是因为 Nouns 本质上更像一个捐赠型的 DAO:每当一个 Nouns 在拍卖中成交,它都为财库带来了直接且可以追踪的资金。而财库中已经被使用的资金都相当于支持了生态建设,视为捐赠,并不对应到某个成员个人的具体权益,这也给实施“愤怒退出”提供了便利条件。
写在最后
由于“愤怒”和“退出”都是日常语境中常用的词汇,当它们组合起来时,人们很容易仅从字面上理解其意思。而 Moloch 协议,尽管首创了这一概念,却并未将其定义为专有名词。这导致了“愤怒退出”的逐渐发展和公众对它的多种解读,有时还带有误解。这样的演变也让我们看到了技术和文化的交融与进化。每一个创新、每一次误解都推动了 DAO 领域的思考和改进。今天,我们谈论的“愤怒退出”已不再是其初始的样貌,而是一种与时俱进、不断演化的制度创新。
DAO 作为一种去中心化的组织模型,正处于其发展的早期,它面临的每一个问题,都会引导我们去探索和定义未来数字社会的运作机制。而“愤怒退出”就是这漫长旅程中的一个关键节点,它不仅仅是几行代码、一个功能,更代表着对自由、公正和共同体权益的探索和追求。
附:Moloch V1 中的 ragequit 合约代码,只有短短 21 行
function ragequit(uint256 sharesToBurn) public onlyMember {
uint256 initialTotalShares = totalShares;
Member storage member = members[msg.sender];
require(member.shares >= sharesToBurn, "Moloch::ragequit - insufficient shares");
require(canRagequit(member.highestIndexYesVote), "Moloch::ragequit - cant ragequit until highest index proposal member voted YES on is processed");
// burn shares
member.shares = member.shares.sub(sharesToBurn);
totalShares = totalShares.sub(sharesToBurn);
// instruct guildBank to transfer fair share of tokens to the ragequitter
require(
guildBank.withdraw(msg.sender, sharesToBurn, initialTotalShares),
"Moloch::ragequit - withdrawal of tokens from guildBank failed"
);
emit Ragequit(msg.sender, sharesToBurn);
}
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。