SIP-341: Add Configurer Address

Author
StatusApproved
TypeGovernance
NetworkEthereum & Optimism
ImplementorTBD
ReleaseTBD
ProposalLoading status...
Created2023-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 to OwnableStorage.onlyOwner() where appropriate.
  • Create a setConfigurer function that can only be called by the system owner.
  • Add a nominateConfigurer and acceptConfigurer 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 and related rights waived via CC0.