How EOS And ETH DeFi Made It Through Market Turmoil
Here’s what happened
On March 11 at 12:56 PM EST, Tedros Adhanom Ghebreyesus, the director of the World Health Organization, stated that COVID-19 can be characterized as a pandemic. Industry experts consider the global uncertainty around this respiratory disease — from travel bans by the US government to the continuing global market turmoil — to be a trigger of the cryptocurrency market’s painful crash.
Most cryptocurrencies saw their biggest 24-hour price drops in a single 24-hour period. The strong downward trend started off around 2:00 AM EST on March 12 and continued till the morning of March 13. Ethereum took a huge 33% hit (roughly $60) by 9:30 EST, plunging 46.6% overall within these two days. EOS covered almost the same numbers, losing 42.42% of its value. The charts of both cryptocurrencies’ price movements are remarkably similar.
The continued market fall had an obvious impact on the DeFi sector, which commonly relies on over-collateralized digital assets to back the value of new currency. The ensuing barrage of liquidated undercollateralized assets embraced DeFi protocols and even touched its risk-averse investors. These circumstances became a proper stress test for the biggest industry’s projects, revealing their weaknesses as well as their strengths. Here is some analysis of what happened to MakerDAO, the biggest DeFi project on Ethereum, and how it lines up with Equilibrium EOSDT, the biggest DeFi project on EOS.
How did two different projects weather the same storm?
The perfect storm
As soon as the crypto market entered panic selloffs, the number of transactions in blockchain networks predictably increased. The Bitcoin blockchain normally hovers around less than 0.7 transactions per second, but it was handling 5.76 transactions per second at its peak on March 13. These circumstances easily cause congestion in the networks and seriously affect their normal operations.
The number of pending transactions on the Ethereum network increased transaction time dramatically. The average amount of time to confirm a block increased from usual 15 seconds to 2,680 seconds (44 minutes) while the gas price was spiking to ridiculous levels around 110 gwei (compared to an average Ethereum transaction price of 16 gwei).
Therefore most of the transactions on the network got clogged, affecting the normal operations of any DApps running on top of it (unless their users were paying outrageous transaction fees — keep this part in mind). This flood of pending transactions became one of the reasons why MakerDAO’s price feeds glitched. Apparently 14 anonymous price providers didn’t raise the gas price, but simply stopped pushing actual prices to the blockchain. Or their transactions just simply failed.
At the same time, EOS didn’t experience these issues the same way (see fig. 3). Compared to Ethereum, EOS is not that sensitive to a rise in simultaneous transactions due to its architecture specifics. Unlike Ethereum, EOS was designed for bandwidth capacity of 250 transactions per second, and could potentially be scaled to 4,000. Ethereum processes 15 transactions per second as of this writing.
Furthermore, EOSDT’s price feeds (provided by three public oracles: Provable, DelphiOracle, and LiquidApps) were in full working capacity during the entire timeframe. We can see the curve of the on-chain price feed almost replicates the market price. The largest deviation was 15% and lasted for around 10 minutes (see fig. 4).
The differences in price feed accuracy also come from the average refresh rate. This is once per minute with EOSDT, and once per hour with MakerDAO. That’s obviously too slow for such a rapidly changing landscape, like we saw just recently (even if MakerDAO’s price feeds worked properly). The question of whether or not Ethereum can support fast and economically viable price feeds is still in place.
The prices on MakerDAO’s smart contracts were outdated for quite some time. The on-chain ETH price in particular was $126.69 at 22:04 EST on March 13, while the market price was as low as $95.69. This huge 32% deviation was effectively a market premium on liquidated ETH collateral, which was supposed to be offered at the discount auction instead.
According to our research, there were two significant periods when the on-chain price was significantly deviating over 10% from the market price — between 06:44 EST and 13:04 EST on March 12 (around 6 hours) and between 19:29 EST and 23:04 EST the same day (around 3.5 hours).
These periods perfectly match the two waves of market collapse and Ethereum network turmoil.
Let the show begin
Margin calls came raining down with the first heavy price drop. At this time, the on-chain prices of both systems were synced up with the market, and both the EOS and Ethereum networks were functioning properly. But as soon as MakerDAO’s on-chain prices started losing their peg, the intensity of margin calls and liquidations began decreasing, despite the continuing market crash.
The spikes in margin calls on Equilibrium EOSDT fall exactly on the price dumps, but in MakerDAO the margin call dynamic seems to be lagging. These fundamentals lie in the key difference between EOSDT’s and MakerDAO’s liquidation mechanics.
MakerDAO completely relies on the action of a third-party player (called a keeper) who is supposed to watch after existing vaults and trigger a “bite” action to call for margin if some become undercollateralized. The system verifies that the call is legit and releases collateral to the auction smart contract.
But Equilibrium EOSDT doesn’t require any third-party involvement, since the system identifies undercollateralized user positions automatically on every price update.
Due to the network clog, most of MakerDAO’s keepers were unable to trigger the bite method. At the same time, some vaults were not considered undercollateralized, thanks to the overestimated on-chain price.
Worth mentioning that liquidations in Equilibrium EOSDT are as simple as an ordinary asset transfer to a smart contract (compared to MakerDAO, where a sophisticated keeper bot is required). The simplification of the liquidation interface makes it available for a broader audience and might mitigate potential inefficiencies.
This is how the liquidation dynamics look for the given timeframe. If you’re wondering, “Wait, why is outstanding ‘bad’ debt in MakerDAO increasing over time?” then you’re asking a perfectly reasonable question.
MakerDAO is in turbulence
As described above, the initial offer of liquidated ETH collateral at the auctions was way higher than its market price. This happened due to outdated on-chain prices that were 32% higher than the market price at its peak deviation during the network clog. We can assume that it might mislead keepers amid the booming gas price. It seems like some of them refused to participate in the auctions to avoid being overcharged or even losing their funds (due to the high transaction cost and unpredictable system behavior). Other than that, they simply could not broadcast a transaction.
But there was one market actor who decided to try his luck and to jump on the auction, despite the risk of potential losses. It looks like he either didn’t want to take that much risk or just wanted to run an experiment with fate. He added a bit more gas (150 gwei — ten times more than the standard) and bet 1 at auction ID 823 (50 ETH) at 08:49 EST on the day in question. This opened Pandora’s box: He won the auction at 09:16 EST, and we only know his Ethereum address: 0x43559e88e1bf4594cfa2cb100f325219fa1c0349. A bet of 1 actually means 10^-18 DAI, according to the standard ERC-20 token precision — that’s a number so small that it’s effectively zero.
There were 1,293 auctions won at the near-zero price of 10^-18 DAI. While ETH price was declining, there was a lack of natural buyers for the “bad” debt and the imbalance in MakerDAO’s system continued increasing.
The distribution of ‘zero’ bid auctions over time matches with both waves of market collapse and Ethereum network turmoil.
The last ‘zero’ bid auction was completed at 23:14 EST on March 12, right at the end of the second wave of the storm. The average auction of this kind was 50 ETH, and MakerDAO’s users ended up missing over $5.5 million.
At least 8 Ethereum addresses were competing in these auctions:
Some people are arguing that there is nothing wrong in auctions with bids that are technically more than zero. Another possible argument is that auctions are the fairest liquidation model — if no one wants to buy an asset, then a price of zero is fair. We know where they are coming from, and we call it a failure of common sense expectations. People don’t win $6,000 auctions in the real world by bidding 10^-18 dollars. And there definitely were those who wanted to participate with more reasonable bids, but they simply couldn’t because the network got stuck.
Without any doubts it was a mistake of system logic. It is a hypocrisy even to speculate whether it is a feature or a bug. It is an obvious vulnerability discovered by market actors who extracted over $5.5 million from MakerDAO’s smart contracts.
It seems like the developers just didn’t account for any heavy load on the underlying platform. This is why the market should not discard the value of highly scalable systems like EOS — it delivered a smooth experience for DeFi projects like Equilibrium EOSDT during the latest turmoil.
The MakerDAO Foundation recently proposed several further steps to resolve the situation. One of them is a backstop auction (a controversial decision) and a very reasonable increase of the auction time to 6 hours (without further timer renewal on every bid). Hopefully the industry will learn lessons and arguments like “10^-18 is more than zero” and “You’d better ask Vitalik” will no longer be eligible.