Introduction
BabelFish is an aggregator of USD-pegged stablecoins. While the stablecoins that are added to the aggregator are vetted to filter through only what the community considers among the strongest USD-pegged stablecoins, it is still possible that one of these stablecoins is compromised after they are added to the aggregator. A particularly bad problem that can happen is that a stablecoin is compromised in such a way that its supply is inflated beyond the value of its backing collateral, causing the stablecoin to become partially unbacked. For example, the stablecoin issuer might go rogue or have their minting key compromised, or the smart contract used to mint the stablecoin could have a vulnerability exploited.
BabelFish needs a mechanism for responding to these events as quickly as possible to prevent the compromised stablecoin from being used to drain all of the other stablecoins in the aggregator. We can use the USD price of the stablecoin as a proxy for risk. If the USD price of a given stablecoin drops too much for a long enough period of time, this will indicate that there is a serious risk that deserves a response. The response should allow a long enough period of time to confirm that the price drop is not a temporary glitch, but not so long that a compromised stablecoin could come across the bridge and drain the XUSD aggregator.
**Note: This proposal has already been implemented on mainnet as described here. If approved, this proposal will remain in effect. If rejected, the proposal implementation will be rolled back to be removed until it is approved by BabelFish Bitocracy. **
Out of scope
There are three situations that we anticipate could cause a stablecoin to be inflated beyond its backing collateral value where we are unable to respond in time, and therefore might not be able to be guarded against by the mechanism described in this proposal:
- A Rootstock-based stablecoin is compromised (since we would not have any time to respond to a problem)
- Stablecoins that are compromised but do not have an external USD price feed.
- Bridged stablecoins that are compromised due to malfunctioning or compromised bridge signers, bridge contracts, or bridge token contracts.
Implementation
Smart contract change implementation requirements
-
Using a GovernorAdmin proposal, FISH Bitocracy should be able to:
- Add one or more Rootstock addresses to a “deposit pauser list”.
- Remove one or more Rootstock addresses from the “deposit pauser” list.
- Un-pause any deposit pause that is active.
-
Addresses on the deposit pauser list should have the power to submit a “deposit pause” transaction that will immediately pause deposits of one or more of the stablecoins in the BabelFish XUSD aggregator.
- Initial addresses added to the deposit pauser list.
- 0xe5277D0B5CddfdddaefB87792ff76517980643d0
- 0x6D63d2eD09638fb9f6cFe2Ad2053B23e404b79b2
- These addresses are controlled by a Sovryn developer who is running a keeper node that is designed to automatically pause stablecoins that depeg to the downside by more than 3% for longer than 10 minutes according to the price feeds it monitors.
- Initial addresses added to the deposit pauser list.
-
Mainnet BabelFish XUSD aggregator deployment: 0x1440d19436bEeaF8517896bffB957a88EC95a00F
-
If approved, this proposal will remain in effect
-
If rejected, the proposal implementation will be rolled back to be removed until it is approved by BabelFish Bitocracy.