SIP-390: Delegate governance power from collateral token deposited in Synthetix
Author | |
---|---|
Status | Draft |
Type | Governance |
Network | Ethereum, Optimism, Base & Arbitrum |
Implementor | TBD |
Release | TBD |
Created | 2024-05-31 |
Simple Summary
Enable Synthetix to delegate governance power from token deposited in the system to any address set by governance.
Abstract
Add address delegatee
in CollateralConfiguration.Data
field and a function call delegate(address delegatee)
to token when delegatee
is not set to address(0)
Motivation
As Arbitrum deployment is accepting ARB as collateral, there is an opportunity to use the governance power in the token to vote on proposals. This could be set to delegate to multisig of Ambassador Council multisig.
Specification
Overview
Add a call to delgate to token when address is not address(0)
Rationale
As collateral configuration is already exists, the delegation can be piggybacked on top in V3 system. Not all token has delegate function and calling it will revert. Those cases will just have delegatee
set as address(0)
. In case of giving up voting power, the governance can change the address into dead address.
Technical Specification
Add IVotes
interface which is used by many governance token as following.
interface IVotes {
function delegate(address delegatee) external;
}
In CollateralConfugration.Data
struct, add the following.
library CollateralConfiguration {
struct Data {
...
+ address delegatee;
}
}
In set
function, add the following.
function set(Data memory config) internal {
...
if (config.issuanceRatioD18 < config.liquidationRatioD18) {
revert ParameterError.InvalidParameter(
"issuanceRatioD18",
"must be greater than liquidationRatioD18"
);
}
+ if(config.delegatee != address(0)) {
+ IVotes(config.tokenAddress).delegate(config.delegatee);
+ }
...
storedConfig.depositingEnabled = config.depositingEnabled;
+ storedConfig.delegatee = config.delegatee;
}
Test Cases
When delegatee
is not address(0)
- it should call
delegate(address)
withdelegatee
as parameter. - otherwise do nothing.
Configurable Values (Via SCCP)
address delegatee
a address to delegate to.
Copyright
Copyright and related rights waived via CC0.