[DIS] 修改票数的计算方式 / Changing How Votes Are Calculated

Updates:

Voting is now live on Metaforo: https://dao.ckb.community/thread/vot-changing-how-votes-are-calculated-43287

该提案在 Metaforo 平台的投票链接:https://dao.ckb.community/thread/vot-changing-how-votes-are-calculated-43287



TL;DR

很高兴看到近期论坛上有不少关于 CKB Community Fund DAO 元规则的讨论贴,作为 Nervos 社区的一员、CKB 的长期持有者,我也打算发起一场修改元规则的讨论:修改 DAO 的票数计算方法。

根据 CKB Community Fund DAO 规则和流程,这份提案需要在一周内获得 30 个赞才能进入投票阶段,在投票阶段则至少需要 185,000,000 CKB 参与投票,有超过 67% 的赞同票,才能修改元规则。所以,如果你也认可这份提案,请留下你的赞;如果你有不同的观点,也欢迎你在评论区畅所欲言。

背景信息

在投票阶段,Metaforo 这个平台会通过 Magickbase 提供的 API 来获取用户的投票权重。

这个 API 的设计是:只要存过 Nervos DAO 就有票数,而不是看这个地址当前的 Nervos DAO 存款。举个例子,一个地址很久以前存了 100w CKB 到 Nervos DAO,现在早就全部取出来了,但这个地址依然拥有 100w 的票数。

为什么要修改目前的票数计算方式?

这种 “不看实时的 Nervos DAO 存款,而是看历史上存过多少 CKB” 来计算票数的做法,既不公平,也容易被人用来做恶。

不公平体现在那些已经从 Nervos DAO 中取出存款的地址,依然享受着和有 Nervos DAO 存款的地址一样的待遇。

容易被人用来做恶,指的是一个地址可以通过不断地存入、取出操作,用有限的 CKB 将自己的票数变得(理论上)无限多。举个例子,Bob 拥有 100w CKB,他不断地通过存入、取出操作,一年之内可以让自己的地址拥有 1200w 的投票权重,两年内可以拥有 2400w 的投票权重,三年内拥有 3600w 的投票权重…

P.S.
这里也列举一下目前这种票数计算方式的支持者们的观点:Nervos DAO 的存入+取出,大约需要一个月的时间。所以,虽然用户可以通过不断地存入+取出,来实现投票权重的增加,但他们也付出了时间成本,以及牺牲了 Nervos DAO 的存款利息。

怎么修改?

我必须承认,最合理的方案是在计算票数时,把 Nervos DAO 存款的时长也考虑在内。比如同样是 100w CKB,在 Nervos DAO 中存了 10 天的地址,和存了 1000 天的地址,给予相同的投票权重显然有失公平。但是,把存款时长考虑在内会让票数的计算方式变得复杂,这意味着我们需要花很多的时间来设计一套合理的计算方案,再花很多时间让社区达成共识,最后还需要留更多的时间给开发团队去做修改。

所以,这份提案只想往前走一小步,将票数的计算方式更改为:读取 Nervos DAO 的实时存款值。这个修改相对简单,投票通过后预计一两天内就能完成。

未来,等更多的人参与进来之后,我们可以考虑再次升级票数的计算方式,并把存款时长作为重要因素考虑在内。

预算

预算:0

感谢 Metaforo 团队,这个票数计算方式的修改,不需要动用 CKB Community Fund DAO 的资金。


Changing How Votes Are Calculated

TL;DR

Glad to see that there have been several discussions about the meta-rules of the CKB Community Fund DAO. As a member of the Nervos community and a long-term holder of CKB, I would like to initiate a discussion about modifying the meta-rules – changing how votes are calculated.

According to the CKB Community Fund DAO Rules and Process, this proposal must receive 30 likes within a week before moving to the Voting Stage. In the Voting Stage, this proposal requires a minimum of 185,000,000 CKB votes to pass, and more than 67% of the votes must be in favor of modifying the meta-rules. Thus, if you agree with this proposal, please leave your likes; if not, please feel free to leave a comment.

Background Information

During the voting stage, Metaforo will use the API provided by Magickbase to determine the number of votes each user has.

The API works by looking at the CKB address’s history of Nervos DAO deposits to determine its number of votes, rather than checking the current Nervos DAO balance. For example, a user who deposited 1 million CKB in the Nervos DAO a long time ago, and he has already withdrawn it, but this address still has 1 million votes.

Why is it necessary to change the way votes are counted?

The current method of calculating votes by looking at a user’s history of Nervos DAO deposits is both unfair and can be used for malicious purposes.

The unfairness arises because addresses that have withdrawn deposits from the Nervos DAO still receive the same voting weight as addresses with Nervos DAO deposits.

Furthermore, the current method can be exploited by an individual to gain unlimited votes through continuous deposit and withdrawal operations. For example, Bob owns 1 million CKB and he can increase his number of votes to an (in theory) infinite amount by continuously depositing and withdrawing. By doing so, he could own 12 million votes within a year, 24 million votes within two years, and 36 million votes by the end of the third year.

P.S.
It’s worth noting that some supporters of the current calculation method argue that it takes about a month to complete the Nervos DAO deposit and withdrawal process. Thus, although users can increase their votes by continuously depositing and withdrawing, there is a time cost, and they have given up the deposit rewards of Nervos DAO.

How to modify?

I must admit that, ideally, a more equitable calculation method would take into account the duration of a Nervos DAO deposit. For example, if two addresses deposit the same amount of CKB, address A for 10 days and address B for 1,000 days, it would be unfair to give them the same voting weight. However, factoring in deposit duration would complicate the calculation, which means that we need to spend a lot of time designing a reasonable calculation method, and then spend a lot of time to reach a consensus within the community, and more time for developers to make the change.

Therefore, this proposal only suggests taking a small step forward. Under this proposal, the calculation method for votes would be changed to reflect real-time Nervos DAO deposits, rather than the historical record of deposits. This modification is relatively simple and expected to be completed within a day or two after the proposal is passed.

In the future, as more people participate in the DAO, we can reconsider upgrading the vote calculation method to include deposit duration.

Budget

Budget: 0

Thanks to the Metaforo team, implementing the change of how votes are calculated does not need to spend the funds of the CKB Community Fund DAO.

38 Likes

imo this is a bug with the implementation and does not require a vote.

In no place was it stated in the rules that someone’s voting power would be based on their historical balance, but rather current balance.

6 Likes

I initially thought it‘s an implementation bug. However, after reporting it to the Metaforo team, they informed me that the API provider was aware of this. When designing the API, they argued (which I also mentioned in my proposal):

It takes about a month to complete the Nervos DAO deposit and withdrawal process. Thus, although users can increase their votes by continuously depositing and withdrawing, there is a time cost, and they have given up the deposit rewards of Nervos DAO.

I then shared this information with the Committee of CKB Community Fund DAO, and they believed that this issue should be decided through community discussion and voting, rather than being directly decided by the Committee.

That’s why I wrote this proposal.


一开始我也以为这是一个执行过程中的 bug,但当我将其报告给 Metaforo 团队时,被告知 API 提供者知道这事。在设计 API 时,他们认为(我在提案中也写了):

Nervos DAO 的存入+取出,大约需要一个月的时间。所以,虽然用户可以通过不断地存入+取出,来实现投票权重的增加,但他们也付出了时间成本,以及牺牲了 Nervos DAO 的存款利息。

于是,我将此事告诉了 CKB Community Fund DAO 执行委员会,执行委员会认为此事应该由社区讨论、投票来决定,而不是由他们几个人自行决定是否修改。

这就是我提交这份提案的原因。

4 Likes

Thanks Jacky for checking into this and raising this important issue.

While I am greatly in favor of exercising meta-governance in general, I don’t think applying it here is a good precedent to set.

The opinions of the committee should not override the rules of the DAO.

From CKB Community Fund DAO Rules and Process

"Create a new poll, select “Calculate votes with Nervos DAO” and check “Weight users’ votes by the number of tokens they hold”

“Number of tokens they hold” means number of tokens currently controlled by the user.

“submitters need to have at least 100,000 CKBs stored in the Nervos DAO to initiate a proposal”

Under current implementation this is not true, only that at a user must have had 100,000 CKB at some time

6 Likes

100% agree with Matt here, this shouldn’t even be up for discussion/vote. I think this could just be acknowledged as a poor decision, changed immediately and we quickly move on.

The argument in favor:

This is just wrong as there is only a 3-5 day time cost if withdrawing at the optimal time, so the loss of DAO compensation is trivial.

But even if we did accept that argument, there can be no argument against the fact that someone who doesn’t even hold CKB anymore and is totally out of the community can still vote on their historical holding.

There is not one community member (with good intent) who could possibly agree that this is a good/fair idea, so a vote is pointless, a waste of time and just prolongs the negativity of the situation IMO.

5 Likes

请问如何确保实时的存款值?
举例:
1、如果一个地址投票之后取出了,这个已投的票会自动删除吗?
2、地址A,在投票前有100W DAO存款,投票之后,立即取出刚好卡2天到账,还在投票周期内,转到地址B存入,地址B在投票,地址A已投票的会失效吗?

我建议由Metaforo团队预估一下添加时间权重的开发周期,看开发周期的时间长短,在决定是临时用实时还是加时间权重。

2 Likes

感谢你的反馈,如果要避免投票后卡时间点取出然后再次投票的操作,可以在投票关闭的那一刻,做一个快照,重新计算、核对每个地址的 Nervos DAO 存款值。

加入时间权重确实是更好的方案,但如何设计这个时间权重,可能就需要花很多时间了,而且这件事需要社区发起,方案投票通过后,其 API 的实现可能还需要 M agickbase 团队帮忙。考虑到这个周期可能会非常长,所以我个人觉得先用过渡方案——读取 Nervos DAO 实时的存款值,更具可行性。


Thank you for your feedback. Taking a snapshot of the Nervos DAO deposits at the moment the voting is closed, and then recalculating and checking the deposits of each address, would solve your concern.

Taking into account the duration of each Nervos DAO deposit is indeed a better solution, but how to design this may take a lot of time, and the design needs to be initiated by the community. After the solution factoring in deposit duration wins the votes, the implementation of the API may require the help of the Magickbase team. The time for this may be very long, thus I personally think it’s more feasible to use the transitional solution first – reading the real-time deposits of Nervos DAO.

2 Likes

Updates:

Voting is now live on Metaforo: https://dao.ckb.community/thread/vot-changing-how-votes-are-calculated-43287

Whether you support this proposal or not, please cast your precious vote, thank you.


该提案在 Metaforo 平台的投票链接:https://dao.ckb.community/thread/vot-changing-how-votes-are-calculated-43287

无论你是赞成还是反对,都请投下你的宝贵票数,谢谢!

1 Like