Clarity-Innovation-Lab / ecosystem-dao

An instance of Executor DAO - a community DAO project
MIT License
2 stars 1 forks source link

Delegation in the Ecosystem DAO. #1

Open radicleart opened 2 years ago

radicleart commented 2 years ago

We currently have two implementations;

See also this overview

Appreciate all opinions?

MarvinJanssen commented 2 years ago

I feel like we haven't quite cracked vote delegation yet. The "direct delegation" method is only minimally invasive and will be fine to use for smaller DAOs. I created a delegate-vote-many but I did not submit it because it would require the delegate to send a list of delegatee principals and amounts in order to deploy that voting power. It just does not scale. For map based delegation there is the problem that people can rescind their delegation and actually remove votes made by the delegate. I think that is very dangerous and prone to abuse. Attackers could choose to rescind at the last moment. I'm of the opinion that once voted, you should not be able to pull the votes / tokens until the vote is over. And for the latter, if you can only rescind delegation when the tokens are not locked up in voting, then it becomes very hard for the delegatee to get their tokens back. We then need a two step mechanism with tokens and an allowed amount, which then eventually unlock and cannot be used again by the delegate. (Also allowing the delegatee to reclaim the votes "on behalf" of the delegate.)

radicleart commented 2 years ago

On rescinding - we also have rescind-time-lock which we reasoned could be set a day or so before the end to prevent the vote from being gamed. It could also be set so the delegatee can only rescind at the start, first day or so - preventing this attack but allowing voter to get their votes back.

I'll take a closer look at the third option this week - tracking delegation via a dedicated token - to see how it plays out.

LNow commented 2 years ago

Do you want to allow multi level delegation, where one user delegates his votes to another, that delegates his votes to another, that delegates to another etc?

I gave a quick look at #6 and it looks like it is possible. And main problem that I see is that user at the bottom of such delegation chain might not be able to reclaim his tokens until users at the top reclaims their tokens first. And this pose a threat to whole voting mechanism, because you can't force users to reclaim their tokens, they may want to keep them locked on purpose to attack DAO.

radicleart commented 2 years ago

There is a check in edg-transfer/transfer line 47/132 of governance extension which prevents transfer of delegated tokens - does this not prevent this multi level delegation?

MarvinJanssen commented 2 years ago

I feel multi-level delegation, although pretty cool, can also be dangerous. It seems hard, if not impossible, to properly unwind the delegation chain. I'm working on a few alternatives. If one seems feasible I'll submit it as another concept PR.