SIP-142: Deprecating EtherCollateral loans

Author
Discussions-Tohttps://research.synthetix.io
StatusImplemented
Created2021-05-26

Simple Summary

Deprecate the skinny Ethercollateral and EtherCollateral sUSD loans and remove them from the Synthetix system.

Abstract

The EtherCollateral loans were scheduled to be deprecated once Multi-collateral loans system has been fully deployed. The current functions of the skinny ether collateral and Ethercollateral sUSD loans can be both done via the Multi-collateral loans and also the Ether Wrapper contracts.

After the one month notice period ending 00:00 UTC on June 25th, 2021, the pDAO would enable liquidations on the Ethercollateral loans as per SCCP 112 which allows any unclosed loans to be liquidated. Outstanding loans can be repaid by repaying the sUSD or sETH borrowed and the ETH collateral redeemed.

The EtherCollateral contracts can then be deprecated and removed from the Synthetix protocol by detaching these contracts from the protocol.

Motivation

With the success of multi-collateral loans on Synthetix over the last 6 months, the time has come to sunset previous EtherCollateral loan contracts that are no longer active. The EtherCollateral loans were intended as a trial to enable users to borrow sETH and sUSD against ETH and had a built in liquidation function to allow them to be deprecated once the multi-collateral loans were fully functional.

Creating new loans with the EtherCollateral contracts have effectively been paused at the moment with the issue limits set to 1 sUSD and 1 sETH.

Another issue with the EtherCollateral sETH loans implementation was that it relied on the Depot contract to have enough sUSD deposited to be purchased for repaying the minting fees when a borrower repays their sETH loans.

Deprecating the EtherCollateral trials would also remove the overhead of managing these trial loans and their lending fees / min c-ratios as the Multi-collateral loans gets updated.

Specification

Overview

The EtherCollateral and EtherCollateralsUSD contracts to be removed from the Synthetix system and remove references in the AddressResolver to these contracts.

The MultiCollateralSynths would remove references to the EtherCollateral contracts as internal contracts that can issue and burn sETH and sUSD synths.

The DebtCache contract would be updated to remove references to these contracts and the amount of ETH or sUSD that is backed by the EtherCollateral loans once all the remaining loans have been liquidated and closed.

Rationale

The MultiCollateralSynths allows certain types of synths to be issued by non-SNX collateral such as ETH, renBTC. By removing the EtherCollateral and EtherCollateralsUSD as internal contracts that can issue and burn these synths from being minted by the deprecated EtherCollateral contracts.

Once the EtherCollateral loans are deprecated they can be removed from the DebtCache contract and the debt that is backed by the EtherCollateral loans can be removed from the debt pool calculation.

Technical Specification

MultiCollateralSynth

contract MultiCollateralSynth is Synth {
        modifier onlyInternalContracts() {
        bool isFeePool = msg.sender == address(feePool());
        bool isExchanger = msg.sender == address(exchanger());
        bool isIssuer = msg.sender == address(issuer());
        bool isEtherWrapper = msg.sender == address(etherWrapper());
        bool isMultiCollateral = collateralManager().hasCollateral(msg.sender);

        require(
            isFeePool ||
                isExchanger ||
                isIssuer ||
                isEtherWrapper ||
                isMultiCollateral,
            "Only FeePool, Exchanger, Issuer or MultiCollateral contracts allowed"
        );
        _;
    }
}

BaseDebtCache.sol

  • Remove references to EtherCollateral and EtherCollateralsUSD in the function _totalNonSnxBackedDebt() debt calculation.

Test Cases

Configurable Values (Via SCCP)

N/A

Copyright and related rights waived via CC0.