Summary:
Reduce TUSD pegkeeper debt ceiling from 25m to 5m crvUSD.
Abstract:
There are currently 4 pegkeepers (PKs) for crvUSD: USDT, USDC, USDP, and TUSD. Each PK has a max debt of 25m crvUSD that it uses to rebalance the crvUSD PK pools and support crvUSD stability. There are risks associated with the current PK implementation that if any PK asset depegs below $1, it can cause the PK to deposit all crvUSD up to its max debt. The pegs of the 4 PK assets are systemically important to the crvUSD peg, which itself may experience a depeg should any of them lose peg due to the programmatic influx of crvUSD on the market. The Curve team have expressed intent to implement an improved PK that protects against this.
Motivation:
TUSD was recently in the news in June after their custodial partner Prime Trust was ordered to cease operations, instigating a market panic over the state of TUSD’s reserves. It was later disclosed by TUSD’s third-party auditor The Network Firm that TUSD has essentially no exposure to Prime Trust. Despite this reassurance, FUD continued to circulate for some time, and also prompted a Llama Risk review to determine if TUSD presented an undue risk to Curve.
The Llama Risk report did not find any wrongdoing and does not verify any FUD criticisms that have been circulating on social media. It does fixate, however, on certain transparency policies that TUSD has, in particular policies on its reserves disclosures. The tldr is that TUSD attestations create more questions than answers and are significantly less transparent than competing stablecoins, including the 3 other crvUSD PKs USDT, USDC, and USDP. They do not disclose the custodians or the assets backing TUSD, except in general terms as: USD cash, cash equivalents and short-term, highly liquid investments of sufficient credit quality that are readily convertible to known amounts of cash. The Hong Kong depository institution also invests in other instruments to generate yield. In all cases, cash equivalents and other instruments are recorded at cost. By contrast, every other issuer discloses a detailed breakdown of the assets in its custody.
The report goes on to explain the risk of the current PK implementation and recommends limiting exposure to TUSD until a new implementation is deployed that mitigates the risk to crvUSD. In fact, the Curve team have expressed intent to deploy an improved version of pegkeeper that addresses this.
Specification:
Pegkeepers depend on the AggregatorStablePrice contract to determine the crvUSD price in USD. It aggregates the oracle value from each of the 4 PK pools to determine this value. When a downside depeg occurs in a PK asset (e.g. TUSD), it causes the oracle to incorrectly report crvUSD price as higher than it really is. This is smoothed out by the aggregation, but the PK logic only requires an aggregated value >=$1 to allow PK to deposit into the pool.
The TUSD PK logic for depositing to the pool is:
- Require over 15 minutes passed since the last update
- Require the TUSD balance in the pool > the crvUSD balance
- Require the aggregator quotes a crvUSD price >= $1
- If the conditions are met, supply an amount of crvUSD equal to 1/5 of the difference in balance.
In the event of a PK depeg, the aggregator will likely report crvUSD is >=$1 and the PK’s available crvUSD will begin being deposited to the pool, up to its max debt. Arbs and de-risking LPs will likely cause crvUSD to depeg across the other pools until the aggregator reports a crvUSD value <$1, at which point the PK will stop depositing into the pool and the DAO can take any necessary action. If the depeg is permanent, crvUSD may be stuck with bad debt, as there would be no way to remove the unbacked PK crvUSD from circulation.
Decoded contract call:
├─ To: 0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC
├─ Function: set_debt_ceiling
└─ Inputs: [(‘address’, ‘_to’, ‘0x1ef89Ed0eDd93D1EC09E4c07373f69C49f4dcCae’), (‘uint256’, ‘debt_ceiling’, 5000000000000000000000000)]