Bitspark peg.PHP and BitUSD collateralised stablecoins
On the 10th of June, we deployed an update to our price feed script for the peg.PHP asset with the intent on narrowing the gap between our price feed and the market - it was about 2% of the market due to pricing differences on some exchanges and not excluding fees from rate calculations for some brokers. Unfortunately, there was an error in the calculation which got past our staging and testing release processes which resulted in all 3 price feeds for the peg.PHP asset being updated with the incorrect price feed. This caused the asset to go into Global Settlement.
A Global Settlement event occurs in Bitshares when the people who have created a stablecoin (e.g. peg.PHP) do not have enough crypto (e.g. BTS) to back the amount of the stablecoin they created. This is based on the price provided to the blockchain by price feeders.
In this case, Bitspark provided all feeds (for other assets, many more price feeders are available reducing the risk). Therefore, when we deployed the updated pricing, it caused the debt positions to be under-collateralised and the asset was no longer able to be created until the collateral required caught up to the outstanding debt.
What happened next
Approximately 2 hours after it happened, we notified the community via our Telegram channels of the situation and what was being done to solve it. It was noted our intent was to isolate the cause and provide a full follow up at a later date and we committed to refunding the amount of peg.PHP owed by each holder on refloat.
Having had time to review the problem and our internal processes, we resolved to do the following to ensure this never happens again:
- A thorough change to our deployment and QA process. Internal changes have been made to the team to ensure sign off from 3 independent parties in our team is required. Not just the existing DEX team.
- Any future deployment to feeds happens in a staggered manner for each feed
- Seek further non-Bitspark feed producers for Bitspark assets
As you’ll see from our price feed script, there are 10 separate locations we determine pricing from. In the case of the PHP stablecoin (and future stablecoins), below is a common example of a feed flow used to determine a price feed. There are many combinations and a median is taken of all of them but one could be:
A: Get price XE.com: USD/PHP
B: Get price Coinigy USD/BTC
C: Get Price Coingecko BTC/BTS
From the above you can derive some formulas to get PHP/BTS required for a price feed for peg.PHP. Keeping in mind indexes like Coinigy and Coingecko etc get their feeds often from the same exchange thereby centralising the risk of both of those feeds. Often it worked out that depending on the route you take to get PHP/BTS there could be variations of less than 2%, hence our initial update.
The multiple routes was not ideal and shortly after in chat we posited the idea of refloating peg.PHP but with BitUSD as collateral backing.
We think this would greatly increase adoption as follows:
- Much simpler price feeds, USD/PHP is already a major global currency pair and there are plenty of destinations to get this information. There are no formulas required to derive this to feed to the blockchain which also eliminates the percentage of volatility between sources.
- Less volatile asset backing can reduce MCR a lot and increase the amount of circulating supply of PHP and thereby increase liquidity.
- Less risky for shorters to create the asset, the movements in USD/PHP is nowhere near as much as in the BTS/PHP markets.
- PHP is an exotic currency and like all exotic currencies they’re always heading in one direction against the USD, to zero. As a shorter this is an excellent opportunity to make money as the collateral will almost certainly rise against the asset, taking a short position can be very profitable and this is something that’s very difficult to do in the traditional finance world.
- In the case of a Global Settlement of BitUSD, we saw in 2018 1 bitUSD drop to about $0.80 USD. This is a 20% drop from parity which is far less than the 200-300% drop in price of BTS over the same period that forced the settlement of itself. In this case, it is much easier to maintain normal operations of a PHP backed by BitUSD by adjustment of price feeds or by managing MCR. In fact, a Global Settlement of BitUSD that has parity with Bitspark issued PHP and other stablecoins would prompt more purchases of BitUSD debt which would accelerate the time it takes to refloat BitUSD again. So it is a net benefit to the bitshares ecosystem.
- Locking up BitUSD means BTS is already locked up by Proxy, in fact even more BTS is locked up this way as a 1.75 collateral ratio applies to BitUSD and then another multiple of 1.3 (MCR 1.3 for example) applies to a BitUSD collateralised PHP (=1.75*1.3= 2.275 effective BTS collateral, greater than original MCR = 2 for peg.PHP).
Having resolved that BitUSD was a good solution for a refloat of peg.PHP (and for future releases of stablecoins such as VND and IDR as per our roadmap) we decided to look into making that happen.
We had 3 decisions to make
- Bid for the outstanding collateral, re-establish correct price feeds and continue as normal with peg.PHP backed by BTS collateral.
- The same as 1 except ensure all open orders are removed (supply needs to be 0 to change collateral backing and with open orders which can’t be force-closed the asset issuer cannot remove coins from users accounts even with ‘return asset to issuer’ flag), set collateral to BitUSD and refloat peg.PHP with BitUSD.
- Create a new asset to reflect the new direction for stablecoins being backed by BitUSD.
The issue with option 1 is that this does not align with the new direction for BitUSD collateral. We attempted to do option 2 however an existing peg.PHP holder was uncooperative and hostile to removing their open orders, they prefer to have a dead asset than something with value strangely. Therefore today we are releasing our new asset based on the ‘stable’ prefix and the re-launch of PHP via stable.PHP.
New stablecoin stable.PHP
In order to demonstrate our commitment, we have seeded 10,000 BitUSD to back stable.PHP and start the markets. We will look at adding another 50,000 BitUSD soon when our next iteration of the Bitspark platform is live with withdrawal to PHP cash via web not just API (API only currently and also where our major PHP customers integrate with us).
As noted above, shorters should be very interested in this as emerging market currencies almost always depreciate against USD in the long term and therefore creating stable.PHP with BitUSD is highly likely to be a profitable trade, just about always. This is something we are constructing a marketing campaign for, targeting the large financial and FX industry in our home markets in Asia.
We apologise for the circumstances that led to the Global Settlement of peg.PHP and endeavour for that to never eventuate again. We stand by to refund shorters of peg.PHP in full with stable.PHP and resolve to enact a number of new safeguards on deployment processes.
We also think that while this is an unforeseen circumstance, it comes as a new unique opportunity to reduce risk (bitUSD collateral), increase liquidity (lower MCR) and create new DeFi opportunities for shorting exotic currencies easily. As always, we welcome your support and look forward to adding many more stablecoins very soon!