
Iron Fish ends network support after inflation bug
Iron Fish has ended all network support after discovering an inflation bug in its blockchain that allowed an attacker to repeatedly spend the same note, compounding the exploit and exiting through the ChainPort bridge.
The project announced the shutdown on October 30, tracing abnormal wrapped-token activity to a vulnerability in its own blockchain. Iron Fish revealed that an attacker exploited the bug to repeatedly spend the same note, compounding the exploit and exiting through the ChainPort bridge. The disclosure came after an earlier warning about the $wIRON token on Base, where the project had cautioned users about potential issues with full 1:1 backing.
The shutdown statement places the cause squarely within Iron Fish's own implementation. The team confirmed it worked with ChainPort and reviewed the bridge operator's logs before concluding that the inflation bug originated in the native blockchain's Merkle tree. The flaw was traced to a commit from early 2019, where the interaction between the tree and the calculation of a note's nullifier allowed a note to be spent multiple times.
This code path was within the scope of both our external and internal audits, but the bug wasn't caught during review.
Technical vulnerability details
The code-level postmortem explains how the flaw worked through a copied branch in the Merkle tree. At this branch, changing a position bit could still produce the same root hash, allowing someone with spending authority over a note to prove the inserted output at a position that had no separately funded output behind it.
This created a different nullifier, causing the nullifier set to fail recognizing the transaction as another spend of the same note. Since the repeated input appeared under distinct nullifiers, ordinary transaction value-balance checks didn't catch the problem. The flaw specifically allowed inflation through repeated use of an owned input, not arbitrary spending of other users' notes.
Patch offers no recovery path
While Iron Fish has developed a patch that corrects the tree construction to bind every inserted output to a real tree position, the fix cannot repair the existing running chain. The patch changes the roots against which existing history would validate, making mainnet and testnet histories incompatible with the corrected implementation.
The postmortem explicitly states that installing the corrected implementation offers no documented recovery procedure for current balances. The patch is only suitable for a new chain with a newly generated genesis and coordinated network parameters. Preserving the existing chain would require a separate consensus upgrade design and security review that wasn't part of the released fix.
Complete shutdown with no timeline
Iron Fish's earlier maintenance mode had retained foundation-run supporting infrastructure, including bootstrap nodes, the block explorer, and the website. The shutdown announcement ends this support, withdrawing the foundation's commitment to maintaining these components. The project gives no timetable for restoring assured wrapped-token backing or establishing a migration path for existing balances.
A pinned Base contract recorded a supply of 3,925,937.805213 wIRON at block 53143118, but this snapshot doesn't measure the native assets backing the token or the amount created through the exploit. The shutdown leaves users without a clear path forward, as the patch supplies no historical accounting plan and the team has committed no resources to developing a migration solution for existing balances.