SIP-341: Add Configurer Address
Author | |
---|---|
Status | Approved |
Type | Governance |
Network | Ethereum & Optimism |
Implementor | TBD |
Release | TBD |
Proposal | Loading status... |
Created | 2023-09-21 |
Simple Summary
This SIP proposes the addition of a configurer address that can execute SCCPs.
Abstract
The Router Proxy Architecture involves an owner address which can upgrade the protocol by altering the proxy's implementation address (i.e. executing SIPs) and call permissioned functions in the system to alter configuration (i.e. executing SCCPs). This SIP involves adding a new address which is able to call the permissioned functions but not alter the proxy’s implementation address.
Motivation
Adding a configurer
address opens up the design space for on-chain governance. As altering SCCPs should generally entail low risk changes (relative to SIPs), different logic can dictate their control. This also makes it possible to for the protocol to become immutable in the future—the owner of the proxy could renounce ownership, but the configurer could continue to update parameters (which need to remain responsive to dynamic market conditions).
Specification
Overview
Implementation involves adding a new configurer
address to the core, spot market, perps market, and governance systems. This does not need to be added to the oracle manager because it is a stateless system with no configurable values. Then, the validations that determine permissions for configuration updates need to be updated accordingly.
Rationale
The proposed implementation continues to allow the owner address to execute SCCPs. Because this address can effectively replace code that would prevent it from executing these functions, adding such a restriction would not increase security. Also, this pattern makes use of the configurer address optional.
Technical Specification
- Add a
configurer
variable to storage. - Create an
onlyOwnerOrConfigurer
function which references this value and replace calls toOwnableStorage.onlyOwner()
where appropriate. - Create a
setConfigurer
function that can only be called by the system owner. - Add a
nominateConfigurer
andacceptConfigurer
function, such that the configurer (and only the configurer) can transfer its status to another address.
Configurable Values
configurer
- The configurer address, which can be set to the zero address by default.
Copyright
Copyright and related rights waived via CC0.