DAOSquare Incubator 投票系统介绍
DAOSquare
2024-01-26
热度3573

在 DAOSquare Incubator 中的一些机制和技术设计,例如这篇文章介绍的投票系统。这些设计的目标是提供更好的链上风投体验,并使它们符合去中心化、开放、可验证、去信任、无需许可等理念

我们很高兴分享我们在 DAOSquare Incubator 中的一些机制和技术设计,例如这篇文章介绍的投票系统。这些设计的目标是提供更好的链上风投体验,并使它们符合去中心化、开放、可验证、去信任、无需许可等理念。这篇文章我们将专门介绍 DAOSquare Incubator 的投票系统。

在 DAOSquare Incubator 或者说在链上风投的应用场景中,投票的目的通常包括以下几个方面:投资决策、成员管理、资金管理、系统参数调整及合约升级。与普通投票不同的是,DAOSquare Incubator 的投票是可执行的。这意味着投票结果一定会被执行,而不存在人为抗拒执行的可能性。

例如,当一笔投资提案投票通过,投资款一定会从 DAO 划拨给被投方,同时创建一个 Vesting 合约供所有参与该笔投资的投资人在 Vesting 周期内 Claim 被投方的 Token (甚至同时为投资人发行一个代表其投资份额的 NFT)。这种通过技术实现的确定性保证了投融双方的利益,融资方可以确定性地收到投资款,投资方可以确定性地收到融资方的 Token 或未来可得凭证 (份额 NFT)。

这种确定性也同样体现在邀请一位新成员加入 Governor,或修改 Investor 的参与人数上限等等。总之,在 DAOSquare Incubator 中,投票意味着决定一个确定会被执行的具体动作。

几乎所有的 DAO 都有着各不相同的投票策略,这意味着开放、可定制化的投票系统非常有必要。因此我们希望提供一种搭积木的方式让用户定制符合其需求的投票系统。

整体而言,该投票系统由以下几类参数组成:

  • 投票资格 (Voting Eligibility):谁有权参与投票。
  • 投票权算法 (Voting Power Algorithm):投票权算法定义了如何计算每位投票者的投票权。它涉及两方面内容:用什么投票 (计票资产 Voting Asset)、以及如何基于这些 Voting Asset 赋予投票者投票权重 (Weight Algorithm)。
  • 投票结果判定算法 (Voting Judgement Algorithm):通过多种可选的 Support (支持率) 算法和 Quorum (参与度) 算法为投票提供判定参数。DAO 可以通过设定的 Support 和 Quorum 值来判定一个投票是否应该被通过。
  • 周期参数 (Period):周期参数定义了一个提案的有效时长。它由 Voting Period 和 Execution Period 两个参数组成。

下面,我们来具体介绍。


Voting Eligibility

Voting Eligibility 定义了谁有资格参与投票,而非具体的投票权。一个人可以拥有投票资格,但可能投票权为 0 (投票权取决于 Voting Power Algorithm )。Voting Eligibility 仅定义资格。

在 DAOSquare Incubator 中,用户可以建立和参与三种不同模式的 Venture DAO,这些 Venture DAOs 均通过 Governor 角色来管理和维护,Governor 可以是一群人也可以是一个人 (取决于 Ventures 类型和 DAO 的机制设计)。在 Governor 管理范围内的事务通常通过 Voting 进行决策。特定类型的 DAO (例如 Flex) 还提供了 Investor Poll,其投票机制类似。

场景一:Governor Voting

一个用户是否有权参与某个 DAO 的 Governor Voting (即 Governor Voting Eligibility),是根据该用户是否拥有该 DAO 的 Governor 身份来判断的。至于如何成为一个 DAO 的 Governor,以及谁有资格成为 Governor (Governor Eligibility),后续会有单独介绍。总之,成为 DAO 的 Governor 便拥有了这个 DAO 针对 Governor 管理范围内的投票资格。

场景二:Investor Poll (Voting)

Flex 类型的 Venture DAOs 可以在投资提案开启之前进行一次民意调查 (或称为温度检测) 来判断该投资提案是否有必要开启。DAO 同样也需要设置谁可以参与 Poll 的投票 (即 Poll Eligibility)。

目前 Poll Eligibtliy 提供了四种链上验证类别 (四选一):

  • ERC20: 某 ERC20 Token 的最低持有数量
  • ERC721 (NFT): 某 ERC721 Token 的最低持有数量
  • ERC1155 (NFT): 某 ERC1155 Token 的最低持有数量
  • Whitelist: 钱包地址名单

当用户满足该 DAO 设置的 Poll Eligibility,将自动拥有 Poll 的投票资格,不需要角色批准。

Voting Power Algorithm

投票权算法 (Voting Power Algorithm) 定义了如何计算投票者的投票权,该算法由计票资产 (Voting Asset) 和权重算法 (Weight Algorithm) 组成。

Voting Asset

计票资产 (Voting Asset) 指的是基于什么投票,是获得投票权的基础。简单来说,一个投票者的投票权是使用权重算法 (Weight Algorithm) 对投票者的计票资产 (Voting Asset) 进行计算所得出的值 (及占比)。

DAOSquare Incubator 的投票系统提供了五种链上可验证的计票资产选项:

  • ERC20:以 ERC20 类型的 Token 作为计票资产。例如,一个社区型基金可以将该社区的社区 Token 设置为计票资产。
  • ERC721:以 ERC721 类型的 Token 作为计票资产。
  • ERC1155:以 ERC1155 类型的 Token 作为计票资产。
  • Deposit以 Investors 在 DAO 中的存款余额作为计票资产。
  • Allocation:Allocation 是一种手动分配的计票资产类别,DAO 可以通过提案分配或调整投票者的 Allocation 数量。该计票资产的分配取决于 DAO 的链下共识,但同样可链上验证。

Deposit 和 Allocation 适用于 Vintage 和 Collective 模式的 DAOs,而不适用于 Flex 模式的 DAOs。

如果 DAO 将 ERC20/721/1155 Token 或 Deposit 设置为 Voting Asset,那么投票者的 ERC20/721/1155 Token 持有量或 Deposit 余额的变动会影响其投票权。

ERC20/721/1155 的计票资产类型是将开放性资产引入 DAO 投票系统。Deposit 的计票资产类型可以让 DAO 的治理权和 DAO 的利益建立更为直接的绑定。Allocation 的计票资产类型可以将链下资产和权益的数据或主观分配意愿映射到链上并实现可调用。

Weight Algorithm

Weight Algorithm 是把 Voting Asset 转化为 Voting Power 的计算方法。使用权重算法 (Weight Algorithm) 对计票资产 (Voting Asset) 进行计算便可得出一个投票者 (地址) 在一次投票中拥有多少 Voting Power。DAOSquare Incubator 提供了三种权重算法:Quantity、Log2、1 Vote a Voter。

  • Quantity:Quantity 是一种非常简单的算法,即直接计算投票者计票资产的持有量。例如,一个将 ERC20 Token RICE,则 Jack 的投票权重为 1000。ERC721/1155、Deposit、Allocation 同理。
  • Log2: log2 是一种二次方函数 (查看 Wiki 以了解更多关于 log2 的信息)。简单来说,它减少了巨鲸和小持有者影响投票结果的差距。所以 log2 可以一定程度地减少鲸鱼攻击对 DAO 治理的影响。
  • 1 voter a vote:如果使用 1 voter a vote 权重算法,任何符合 Voting EligibIlity 的投票者无论持有多少数量的计票资产 (Voting Asset),只要 >0,其投票权 (Voting Power) 均会被计算为 1。

Voting Judgment Algorithm

Voting Judgment Algorithm 用于帮助 DAO 判定一个投票是否应该被通过。在 DAOSquare Incubator 的投票系统中,Voting Judging Algorithm 包括两部分:Support 和 Quorum。

Support

Support 体现了投票支持率,即赞成票数在一次投票中的占比或绝对数量优势。只有当支持率高于 DAO 设置的比例或数量,Support 才会被计算为通过。目前有两种 Support 算法可供 DAOs 选择:

算法 A


算法 B

                

Quorum

Quorum 体现了投票参与率,即在一次投票中,参与投票的票数与可参与投票的总票数之间的差值 (比例或具体数量)。目前有两种 Quorum 算法可供 DAOs 选择:

算法 A

                                             

算法 B

                                      

在一次投票中,只有支持率和参与率同时满足 DAO 设定的 Support 和 Quorum 值,该投票才会被通过。


Period

Period 用于为投票设定一个有效的时间范围。Period 包括两类参数:Voting Period 和 Execution Period。

Voting Period

Voting 定义了投票期的时长 (如 1 小时、3 天等),在此期间,所有拥有投票权的成员均可参与投票。

Execution Period

当一次投票结束并产生结果,需要一个执行动作触发合约执行投票结果,如投资打款、Vesting 创建、份额 NFT 铸造等。理想的方案是,当投票结果产生之后合约可以自动执行这些操作,但这将增加技术难度和合约复杂性,以及随之而来的安全风险。因此我们看到大部分可执行的投票系统 (例如 DAOhaus) 都是手动触发合约的执行 (简单的交易确认),DAOSquare Incubator 的投票系统也不例外。由于投票结果已经产生,投票结果必须执行,因此任何人都可以执行它,包括非 DAO 成员。

Execution Period 仅适用于 Vintage 模式 DAO 的投资提案。其目的是让投资提案尽量不受赎回期、退款期 (如果 DAO 设置了这些周期) 以及其他投资提案的影响。

当 Proposer 在 Vintage 模式的 DAO 提交投资提案时,系统会检查 DAO 的赎回期、退款期等时间设置。如果该投资提案的整个运行过程 (投票期+执行期) 会与 DAO 的赎回期或退款期发生冲突,系统将拒绝该提案的提交。

由于 Execution 是一个软设置,这里有两点注意事项:

  • 即使在提案提交时系统做了时间预判,但如果提案未在 Execution Period 内执行,它可能会因为赎回期或退款期内的资金变动而失败。
  • 虽然一个投票的 Execution Period 已经结束,但它依然可以被执行,但执行结果可能与投票结果不一致(投票通过但执行失败)。例如上一条注意事项所描述的情况。

举例:

如果一个 Vintage 模式的 DAO 没有设置 Execution Period,一个投资提案的投票期结束之后可能还没来得及执行就进入了赎回期。投资人的赎回行为很有可能导致 DAO 资金余额小于投资提案要求的金额,以致于该投资提案在执行时失败。

如果 DAO 设置了 Execution Period,例如 2 天。在 Proposer 提交投资提案时,系统会计算 “投票期 + 2 天执行期“ 是否会进入赎回期,如果不会,投资提案方可提交。在投票结束后,Governor (或者任何人) 至少有 2 天时间执行该提案。当然,如果 2 天还未执行,赎回期内的资金变动可能会导致该投资提案执行失败。

由于运行机制不同,Flex 模式的 DAO 没有 Execution Period 设置。


示例

Governor Voting

  • Voting Eligibility
    • Governor Role
  • Voting Power Algorithm
    • Voting Asset: Deposit
    • Weight Algorithm: Log2
  • Voting Judgment Algorithm
    • Support:: YES / (YES + NO) > 66%
    • Quorum: (YES + NO) / Total > 60%
  • Period
    • Voting Period: 3 Days
    • Execution Period: 1 Day

在这个例子中,只有 Governor 身份的成员拥有投票资格 (Voting Eligibility),其投票权 (Voting Power) 是使用 Log2 算法对其在 DAO 的存款余额进行计算得出。一次投票的有效时长是 3 天。当一个投票的支持率高于 66%,同时参与率高于 60%,该投票会被通过。提案的有效执行期为 1 天。

Investor Poll (only for Flex DAO)

  • Poll (Voting) Eligibility
    • Type: ERC 721 (0x….)
    • Min holding: 2
  • Voting Power Algorithm
    • Voting Asset: ERC20 (0x…)
    • Weight Algorithm: 1 voter 1 vote
  • Voting Judgment Algorithm
    • Support: YES - NO > 10
    • Quorum: YES + NO > 100
  • Period
    • Voting Period: 20 Hours

在这个例子中,首先必须持有 2 个及以上某 ERC721 才能获得 Poll Eligiblity。计票资产是某 ERC20 Token,投票权算法是 1 voter 1 vote,这意味着拥有 Poll Eligibility 的人,只要持有该 ERC20,无论数量多少,均被赋予同等的投票权,即 1 人 1 票。

一次 Poll 的有效投票期为 20 小时。最小支持率为 10,最小参与率为 100,这意味着投赞成票的票数至少要比投反对票的票数多 10,同时,参与投票的总票数至少要大于 100,该民调才算成功。


总结

以上便是有关 DAOSquare Incubator 投票系统的介绍。我们希望提供可适用于更广场景的决策系统,让链上风投更易被采用,从而更好地服务于那些致力于去中心化风险投资的 DAO、机构、社区、基金经理、以及投资人。另一方面,随着技术的进步,这套系统也会持续迭代 (例如自动执行)。如果你有任何关于机制设计或者技术方案的建议,欢迎反馈给我们,我们将不胜感激!如果你希望试用它,请与我们联系。

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96