You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
馃 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:
Tokenholders can split their tokens into different wallets
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'ssubDelegateMany( address[] calldata subDelegatees_, uint256[] calldata amounts ) or ENS multi-delegate'sdelegateMulti( 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.
The text was updated successfully, but these errors were encountered:
馃 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'sdelegateMulti( 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.
The text was updated successfully, but these errors were encountered: