Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add partial delegation to ERC20Votes #4963

Open
rsolari opened this issue Mar 17, 2024 · 0 comments
Open

Add partial delegation to ERC20Votes #4963

rsolari opened this issue Mar 17, 2024 · 0 comments
Milestone

Comments

@rsolari
Copy link

rsolari commented Mar 17, 2024

馃 Motivation
At Tally, we see a lot of requests for "partial delegation". "Partial delegation" means letting one address split up voting power between delegates.

There are several existing workarounds:

The fact that there are so many workarounds fragments the standard. There's no single one for frontends like ours to support.

The larger problem with these workarounds is that they don't work well for custodians. Custodians have strict legal mandates and security requirements about moving tokens. Generally, they cannot put their tokens into delegation-splitting contracts like Franchiser. Even splitting tokens into multiple wallets is a big operational lift for them.

They would love to have an in-contract method on ERC20Votes that lets them split voting power.

馃摑 Details

To implement this feature, add a method to ERC20Votes that supports partial delegation.

I don't have a strong view on implementation details here. Franchiser's subDelegateMany( address[] calldata subDelegatees_, uint256[] calldata amounts ) or ENS multi-delegate's delegateMulti( uint256[] calldata sources, uint256[] calldata targets, uint256[] calldata amounts ) are good starting points. I am happy to chat about details and their tradeoffs or suggest some implementations.

The bookkeeping for partial delegation does increase gas costs. IMO that overhead is feasible on rollups, but not on Ethereum mainnet. I'd suggest making partial delegation an extension to or alternate implementation of governance/utils/Votes.sol.

@ernestognw ernestognw added this to the 5.x milestone Mar 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants