The Meltdown of IRON

How Polygon’s first billion-dollar protocol unraveled.

IRON Marshal
7 min readJun 17, 2021

--

The dust hasn’t even settled on the collapse of the IRON stable coin —$262 million in USDC collateral is still locked in a smart contract due to an embarrassing programming bug —but I already feel like writing about it. The whole thing is funny to me, because I got out relatively unscathed. At least for me it was educational, revelatory even.

The IRON dashboard in the aftermath of the meltdown.

The collapse of IRON was (as of this writing) not a rug pull. The developers seem to have been earnest in their attempt to create a new kind of stablecoin , one that was only partially collateralized by a “real” stablecoin. Like many financial collapse stories, this is a story of folly.

[EDIT: I’ve since learned that the developer(s?) behind this are already the laughing stock of the DeFi community, having wrecked each of their 3 previous projects (now 4) — though this might be their biggest hit yet]

The Idea

The idea behind the IRON stablecoin is one of “efficiency”. Other on-chain stablecoins like DAI are over-collateralised. For every $1 of DAI, there’s ~$1.75 worth of crypto assets in the DAI system. In the case of USDC (and supposedly USDT), there’s $1 sitting in a bank account somewhere for every $1 on-chain. Couldn’t we do better than that?

In the past, attempts have been made to devise purely algorithmic stablecoins, that weren’t backed by anything. The developers of IRON correctly pointed out the flaw in these: They are dependent on new money coming in, a condition least likely to be met when the peg is broken. From the IRON documentation:

Non-collateralized stablecoins require continual growth to be successful. In the event of a price crash, there is no collateral to liquidate the coin back into, and the holder’s money would be lost, as seen with many past projects trying to utilize such design [sic].

Instead, IRON took a hybrid approach: Partially collateralize the stablecoin with USDC— it was around 75% for most of its short lifespan —with the rest coming form a volatile asset, TITAN.

Graphic from the IRON documentation. The unholy trinity of stablecoin design.

The stability was to be ensured as follows: If the price of IRON fell below $1, arbitrageurs could buy it for less then $1 on the market, and then redeem it with the IRON treasury (a contract on the Polygon chain) for $0.75 USDC and $0.25 worth of TITAN.

Here the problem should have become apparent: Arbitrageurs are not in the business of token speculation. They don’t want to hold any risky asset for longer than necessary (ideally buy and sell it within a single transaction). So they dump it on the market to collect their risk-free profit. This put price pressure on TITAN, thereby further de-pegging IRON which is partially priced in it.

In their documentation, the IRON developers had the following to say about the value of the TITAN token:

the remaining portion is denominated in a volatile asset [TITAN], which is required as collateral. This requirement creates […] a natural demand for the volatile asset. [emphasis added]

In other words, they expected TITAN to have some value, because it could be used to mint IRON. By doing this, they recreated the incentives of algorithmic stablecoins they’ve denounced earlier: More money has to come in, otherwise the peg collapses.

If they had chosen a volatile asset that had some value outside of their own ecosystem (perhaps MATIC, the token used to pay the transactions fees on the Polygon chain) it could have lasted a little longer, but I wouldn’t bet on it — at least not a second time.

The Hype

Bad ideas are born every day, but why would anyone bother? At its peak, something like 2 billion USD were poured into this ecosystem (I should clarify: 2 billion worth of magic internet beans, not real money. EDIT2: Only about half of this was IRON).

At first glance, one could argue that the innovative design of the stablecoin is what attracted all this capital (who wouldn’t like turning $1 into $1.5 through financial alchemy?) However, neither was IRON the first to implement this design, nor did the same contracts by the same developers deployed on the Binance Smart Chain attract anywhere near as much attention. In fact, the IRON stablecoin continues to “function” on the BSC network as of this writing, keeping its $1 peg, with little fanfare.

Instead the answer might be found in the yield farming ecosystem on the Polygon Chain. There, several auto-compounders are vying for people’s capital. Beefy.finance, Autofarm, and Polycat just to name the major ones. These services are legit (for some definition of legit): They offer to automate the process of collecting and re-investing transaction fees from providing liquidity in automated market makers, which is in turn a legit (by some definition) business: Provide capital, take exchange rate risk, collect transaction fees.

With compound interest factored in, this typically amounts to a couple of percentage points per year, depending on market activity. Good compared to a bank account, but nothing to write home about. Something odd happened with the IRON-USDC pair though. These auto compounders were showing returns of 2% per day (something like 30,000% per year) on a pair of stablecoins.

30,000% annualized percentage yield on a pair of stablecoins.

These returns are extrapolations based on 24h trading volume. In that sense they are “real” — calculated by the same formula as all other numbers on these sites. It so happened that people were piling into the USDC-IRON pair like there was no tomorrow, generating insane amounts of trading fees, driving up the displayed APY up even further, attracting more suckers to pile into it, generating more fees…

For a while, this worked. Every day people would earn crazy rewards, expecting to have more USD than atoms in the universe in 3 years time. Someone on the IronFinance subreddit had the following question:

[about the 30,000% APY] I’m wondering if this can last mathematically?
— Someone on Reddit

“Mathematically”. Clearly, many were not even remotely qualified to be involved in this.

The Collapse

As is to be expected, there are plenty of conspiracy theories to go around attempting to explain why TITAN collapsed. I cannot speak to any of them, but with with something as structurally unsound as the IRON stablecoin, and a fuse burning this fast — from nothing to 1 billion with two weeks — any number of random events could have triggered the collapse.

The collapse is the least interesting part about this story. A worthless asset going to $60 and back to $0 happens every day somewhere in the crypto wild west. A billion $ worth in stablecoins attached to it is the — somewhat — novel part.

You've seen this before.

Hilarity Ensues

After the collapse of TITAN, there were still $0.74 worth of USDC in the IRON treasury for every 1 IRON outstanding. It can be redeemed by the IRON contract itself at any moment regardless of the price in the market (currently ~$0.71). The remainder towards a full $1 was to be payed out in TITAN, but obviously that part is irrelevant now.

In practice it looks a little different. I’ve mentioned in the beginning the the whole episode isn’t over yet, because $272 million worth of USDC is still locked up in in the contract. Why hasn’t everyone recovered their 74 cents? Here things become truly hilarious. It is due to the following line in the redeem function of the IRON smart contract:

require(_share_price > 0, “Invalid share price”);

_share_price here refers to the price of TITAN, as provided by an oracle, which is correctly reporting it as… 0 (somewhere in the distance, you can hear a room full software engineers burst into laughter ).

Since the condition is specified as greater than (>), rather than greater than or equal (>=) , the condition can no longer be met, and so every call to redeem fails. A code audit likely would have caught this (this type of bug is so common in software development, I’ve probably made it hundreds of times myself), but of course this smart contract was not audited. Only its sister-contract on the Binance Smart Chain, written in a different language, was.

In the Telegram group, the developers had the following to say:

Because the TITAN price falls to 0 which we have unthought of [sic], the contract will revert the redemption transaction. [emphasis mine]

Those familiar with the history of financial catastrophes know that the phrase “we never expected …” features prominently in it. Another trope is “we regret to inform you” and “we take full responsibility” (without taking responsibility). I expect these to follow in their yet to be published postmortem.

UPDATE: The postmortem has since been published, and it belongs in a museum for exceptional works of cognitive dissonance: Not only do they fail to even pretend to take responsibility, they also manage to promote their upcoming projects (as if nothing happened), and blame their investors for panicking. The total eclipse of self-awareness is astonishing.

Together with what I’ve learned earlier — that they have a track record of blowing up 4/4 projects — it’s now clear to me that this is not a story of “folly”, but one of an unhinged Billy McFarland-style crew, that’s in constant damage control, hopelessly out of their depth, and who are unable to stop themselves from causing more damage as they go along.

--

--