SIP 33: Deprecate XDR synth from Synthetix. Source

AuthorNocturnalsheet, Clinton Ennis
Discussions-To(https://discordapp.com/invite/CDTvjHY)
StatusImplemented
Created2019-12-17

Simple Summary

Deprecate XDR synth from Synthetix to simplify representation and calculation of claimable fees in fee pool, Gas Optimisations and simplify the system mechanics.

Motivation

XDR has been used in Synthetix since the beginning as an unit of account, however most people are still not able to understand the purpose and calcuation of XDR and most importantly how the price of XDR is being derived.

With the implementation of SIP-29 - Issue, burn and claim only in sUSD, XDR is not required to be the unit of account anymore and sUSD can replace the role of XDR as the base unit of account.

  • This will help new users in Synthetix ecosystem to easily understand how fees are collected and distributed
  • Easier onchain checking and verification of current amount of fees claimable sitting inside fee pool
  • Allows for easier integration of third party dashboards/data analysis as they do not have to call the XDR value to sUSD to represent the USD value
  • No requirement for Chainlink decentraliized oracle to support.
  • System optimizations, gas savings on removing XDR from system mechanics
  • Reduce system complexity

Rationale

  • Reclaiming bytecode space from reduntant code using XDR as a unit of account and converting into sUSD.
  • Reducing all the XDR processing code will reduce the gas usage, saving on mint, burn, claimFees transactions.
  • Allows for full decentralised oracles in future as XDR price is a niche and likely to be unsupported by most oracles.

Specification

Synthetix Contract

  • exchange() fees will be collected in sUSD and stored as sUSD at the fee address making transactions on etherscan easier to read the fee paid
  • debtBalanceOf() calculations will be in sUSD

FeePool Contract

  • On MAINNET deploy, import recentFeePeriods[0-2].feesToDistribute with the exchange rate from XDR to sUSD
  • Temporary ownerOnly function to exchange all XDR’s into sUSD at [fee address] which holds 100% of the XDR’s
  • Swap all XDR implementation to sUSD. e.g. _payFees to remove all exchange from XDR code.

ExchangeRates Contract

  • Remove XDR Participants and XDR rate storage.

Implementation

Not required at this stage

Copyright and related rights waived via CC0.