SIP-238: Only allow token interactions via their proxies

Author
StatusDraft
TypeGovernance
NetworkEthereum & Optimism
ImplementorTBC
ReleaseTBD
Created2022-05-13

Simple Summary

This SIP introduces minimal modifications to the system that will only allow users to interact with SNX, as well as synths, via their proxies, and stop allowing interactions via their implementations.

Abstract

Since our proxies use call instead of delegatecall, the state of our tokens such as the balances mapping does not reside in the proxies, but in contracts specifically designed to hold token states. Whenever a token is upgraded, the previous implementation is discarded, and a new one is connected to the proxy, as well as the token state contract. This results in the fact that two different token addresses represent the same token. We always recommend people to use the proxy address, which never changes, but nothing stops users from interacting with the active implementation. Doing so is identicall to interacting via the proxy.

Motivation

The ability to interact with our tokens via two different entry points can cause accounting issues in smart contracts that are designed to track state for tokens via a single entry point. By restricting interaction to the proxy only, we mitigate such possible accounting issues in all protocols that use Synthetix tokens.

Technical Specification

Mutative functions on all ERC20 tokens, including SNX and all synths, will be modified to only allow interactions via their corresponding proxies.

Copyright and related rights waived via CC0.