|Network||Ethereum & Optimism|
This SIP proposes the addition of a configurer address that can execute SCCPs.
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.
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).
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.
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.
- Add a
configurervariable to storage.
- Create an
onlyOwnerOrConfigurerfunction which references this value and replace calls to
- Create a
setConfigurerfunction that can only be called by the system owner.
- Add a
acceptConfigurerfunction, such that the configurer (and only the configurer) can transfer its status to another address.
configurer- The configurer address, which can be set to the zero address by default.
Copyright and related rights waived via CC0.