DAO and delegated votes questions

Hello everyone! :heart:

I have some simple questions regarding DAOs, and the ERC20Votes module. I couldn't find the answers anywhere I looked, so here I am...

1. Can delegated votes be redelegated?

Let's say there's 3 addresses and they all have 10 tokens each.

  • Address A delegates to B
  • Address B delegates to C
  • Address C delegates to C (self)

What does the voting power look like now?

  • C votes = 30 (A+B+C)

or

  • B votes = 10 (A)
  • C votes = 20 (B+C)

2. Do delegated votes count for the Proposal Threshold too?

I am setting an extremely high proposal threshold in order to prevent spam, but it might be inaccessible if delegated votes don't count for the proposal threshold, so just making sure.

The reason I did this is because I am setting up my DAO to be fully on-chain (I've already added the GovernorStorage module, are there any other goodies?), and I don't want to be fighting 849238 spam bots creating junk proposals on the governance interface.


Thank you!
Glow Worm :star2:

2 Likes

3. Can you delegate multiple times from the same address?

Example:

  • Account A has 100 Tokens
  • Account A delegates 20 Tokens to B, 80 Tokens to C

If not, what strategies can be adopted so that this is possible? I'd like to distribute the voting power in a pool of tokens


Thank you! :heart:

4. Can delegated votes be cancelled during a proposal?

Let's just say the community trusts someone a lot, and that person holds 51% of the total supply through delegations and so on. Then that person creates a proposal to exploit the DAO.

Can the community cancel their delegation and vote against? I understand there's snapshots after some time, when the voting starts... but I'm asking if after the voting starts you can stop supporting that proposal and vote against it, because it's against your interests.


Thank you again! :heart:
Best regards

Hey @Glowworm1206, sorry for the late reply.

  1. Can delegated votes be redelegated?

After the steps you showed, the voting power will be

  • B votes = 10 (A)
  • C votes = 20 (B+C)

The delegations are not chainable. In my opinion the mental model for how delegations work is the following (from the Votes.sol docs):

an account can delegate its voting units to a sort of "representative"

So in this case the balances are:

  • A: 10
  • B: 10
  • C: 10

However, the delegation is who represent those votes regardless of the delegate's representative.

  • B represents A, thus B has 10 voting units
  • C represents B and C, this C has 20 voting units

2. Do delegated votes count for the Proposal Threshold too?

I am setting an extremely high proposal threshold in order to prevent spam, but it might be inaccessible if delegated votes don't count for the proposal threshold, so just making sure.

They do count. When a proposal is created, the threshold is met if the executing EOA has enough delegated voting power (same logic, delegations are not chainable).

3. Can you delegate multiple times from the same address?

Example:

  • Account A has 100 Tokens
  • Account A delegates 20 Tokens to B, 80 Tokens to C

No, this is currently impossible, but there are two related requests in our Github issues, feel free to leave a comment if you think it's worth working on this:

4. Can delegated votes be cancelled during a proposal?

Let's just say the community trusts someone a lot, and that person holds 51% of the total supply through delegations and so on. Then that person creates a proposal to exploit the DAO.

No, they cannot. When a proposal is made, the snapshot of all the current voting power is done at that point, so it can't be modified afterwards even if tokens are transferred or removed.

However, there's a _cancel function available. You may extend such function to allow a veto functionality. I don't have a reference for that unfortunately.

Hope it helps!

Thank you very much for your detailed reply, I really appreciate it!! :heart:

That's a very interesting function I didn't know existed. I see that by default only the proposer can cancel its own proposal... veto power is interesting, in case something goes extremely wrong - but you reintroduce centralization into the mix, so I'm not sure how to feel about that.

Is it possible to create a second proposal to cancel the first one? I think no, because basically the second proposal will technically execute after the first has already been executed, unless there's some sort of shortcut created specifically for this.

Thank you again, you are very helpful! :star2: