The $6M X100 Exploit Paid for Itself. That's the Real Problem.
An attacker borrowed governance weight with a flash loan, drained roughly $6 million from X100, then repaid the loan using the stolen funds. Separately, Arkadiko's ballot counted tokens bought after the fact. Both failures point at the same weak spot: the price of a vote is the price of liquidity.
Six million dollars walked out of X100. The attacker got it with a flash loan, then repaid that loan using the proceeds of the theft. The loan was collateralized by the crime itself. That's not a clever exploit. That's a self-funding round.
Here's how it works, as best as anyone outside the team can piece together. The attacker borrowed a large block of governance tokens through a flash loan, which means those tokens sat in their wallet for the length of a single transaction. With that voting weight, they pushed through whatever action let them drain value from the protocol. The stake stayed locked through the whole sequence, so they couldn't simply hand the borrowed tokens back to the lender. They repaid in stolen assets instead. Loop closed, ledger clean, protocol short $6 million.
Basis points tell the story better than the headline does. Flash loan fees on major lending markets run in the neighborhood of 5 to 9 basis points. On a borrow sized to control the vote, that's pocket change against a treasury worth millions. The math doesn't need a spreadsheet.
Then there's Arkadiko. Different protocol, same smell. The Stacks-based project ran a ballot, and that ballot accepted token purchases made late in the process. Votes backed by tokens bought after the proposal was already live still counted. Nobody spoofed a signature. Nobody broke a contract. The rules simply allowed it, and someone noticed before anyone else did.
Both events land within days of each other. That's not a coincidence so much as a market signal.
Governance Is the Cheapest Attack Surface
The structure employs a mechanic that sounds sensible and isn't. Snapshot voting measures holdings at a block height. It doesn't measure intent, history, or whether the tokens were borrowed for the length of one transaction. So the cost of a vote is the cost of liquidity, not the cost of conviction.
And liquidity is cheap right now. That's the part people keep missing. Lending markets have gotten deep. Borrowing millions in a mid-cap governance token for one block isn't a heroic act. It's a Tuesday afternoon.
Should anyone be surprised by this? Every DAO holding a treasury larger than the flash-loan cost of its own governance token is a target. That's the entire test. Run it on your protocol this afternoon. If the treasury outweighs the borrow fee plus slippage, you're not safe. You're just not interesting yet.
Timelocks help. A multisig veto helps more. Both are unpopular because both are slow, and slow feels like the exact thing crypto was built to escape. But the alternative is what X100 just lived through: a governance process that worked exactly as designed and still lost $6 million.
Arkadiko's situation is arguably worse, because it's a decision rather than a bug. A bug gets a patch. A ballot that counts late purchases is a policy, and policies get reused.
Who wins here? Flash loan providers, for starters. They collected their basis points and carried no risk whatsoever. The attacker, obviously, assuming the funds can eventually be moved. The honest voters on both protocols lose. So do depositors who treated a DAO vote as a form of insurance, which it never was.
My take is blunt. Governance tokens aren't securities and they aren't equity, but they get priced like both the moment a treasury is on the line, and that mismatch is where the money leaks. If a token carries a vote on tens of millions in assets, it should cost far more than a few basis points to rent for a block. It doesn't. It probably won't until enough treasuries get drained that the market reprices the risk on its own.
Wall Street is moving. Quietly. And the first question an institutional allocator asks isn't about yield. It's about who can change the rules and how fast. Right now the honest answer for most DAOs is anyone with a lending market account and a little patience. That answer kills allocations before they start.
What to Actually Fix
Two changes, and neither is exotic. First, snapshot at a block that predates proposal creation by several days, then exclude wallets whose balance was borrowed inside that same window. Second, put a timelock between passage and execution long enough for depositors to exit. Neither fix is glamorous. Both would've stopped X100 cold.
Here's the thing about governance exploits. They don't look like exploits from the inside. The transaction succeeds, the vote passes, the timelock releases, and everyone spends a week arguing about whether it was fair before somebody pulls the loan history and finds the answer.
The deal includes provisions for exactly this in the protocols that bothered to write them. Most didn't. Most still haven't.
X100's $6 million is a rounding error next to what a top-ten DAO treasury holds. But the structure that failed here's the same structure those treasuries run on. The only thing separating a $6 million loss from a $600 million one is the depth of the lending market for the relevant token, and that market gets deeper every quarter.
So here's the takeaway, and it isn't complicated. If you hold a governance token in a protocol with real assets, go read the snapshot rules today. If those rules count tokens bought after the proposal went live, you don't have governance. you've an open auction with a nice user interface.
Explore More
Key Terms Explained
An approval term meaning authentic, bold, or worthy of respect.
A bundle of transactions that gets permanently added to the blockchain.
Ownership stake in a company, represented as shares of stock.
An uncollateralized loan that must be borrowed and repaid within a single blockchain transaction.