Somewhere in the block history of that day, there is a transaction almost nobody screenshotted. 0.3667 ETH. Not to the attacker's main wallet, not into a mixer — into the address that would eventually receive the proceeds. It arrived forty-five minutes before the bridge was emptied.
That is the detail I keep circling back to.
Not the 8.72 million FET pulled out of the Ethereum side of the SingularityNET bridge — roughly $1.55 million — through a call the contract was explicitly configured to accept. Not the 408,500,000 NTX minted out of nothing against a minter key that had been dormant since March 2023. Not even the fact that something close to 42% of NuNet's recorded token supply appeared in circulation over the course of a single afternoon.
It's the forty-five minutes.
Because a bridge drain that happens in one transaction looks like an exploit. A bridge drain preceded, three quarters of an hour earlier, by a small gas-funding transfer moving from one compromised system into the wallet that will collect from a second compromised system — that isn't an exploit. That is a schedule.
Two projects. Two sets of privileged credentials. One coordinated operation. A DEX sale that had already begun before the FET bridge was cleaned out.
There was no reentrancy. No oracle manipulation. No flash loan, no price distortion, no clever Solidity. The contract did precisely what it was configured to do, for a caller presenting a signature the contract was configured to trust. Which means the code was never the vulnerability. The people holding the keys were.
This is a story about credential hygiene. It just happens to involve $1.55 million, a key from 2023 nobody retired, a quarter of a billion freshly printed tokens, and a five-hour window in which nothing was rotated.
In the DeFi winter, we didn
(Finish that line yourself. It's more honest that way.)
What actually sits underneath the ASI banner
Some scaffolding first, because the words Fetch.ai, SingularityNET, NuNet, NTX, WMTX and ASI are being used interchangeably in the coverage and they are not the same thing.
The Artificial Superintelligence Alliance — ASI — is the 2024 consolidation of Fetch.ai, SingularityNET and Ocean Protocol. Three teams, three token histories, one narrative. AGIX and OCEAN holders were shepherded toward FET through conversion infrastructure. That conversion is not magic. It runs through bridges, mint-and-release contracts, and a set of backend services holding privileged authority over token flows between Ethereum and Cardano.
The affected facility belongs to SingularityNET, primarily its Ethereum–Cardano bridge. The contract named in the forensics is TokenConversionManagerV3, a legitimate lock-and-release component whose source matches SingularityNET's public repository. That detail matters enormously, because it removes the easiest explanation. This was not a counterfeit contract. This was not a malicious deployment dressed up with a similar name. This was the real bridge, running the real code, verified against the real repo — and it was drained anyway.
Fetch.ai's own contracts and standard FET transfers kept operating. The team said so and the chain agrees. But the conversion service — the AGIX-to-FET pipeline — along with the Ethereum-side bridge became the clearest public signal of whether this ecosystem is healthy or not.
Then there's NuNet, the decentralized compute network in the same orbit, with its own token, NTX, and its own privileged minter key. And WMTX, another token sharing rails with the same settlement infrastructure. Hold those names.
Because here's the sentence everyone skimmed past: WMTX, FET and NTX all use infrastructure connected to that Ethereum–Cardano bridge ecosystem. That should have been the headline. Not the $1.55 million.
Every cross-chain bridge makes a trust assumption. The ambitious ones try to minimize it — multi-prover designs, optimistic challenge windows, zero-knowledge verification, validator sets with economic slashing behind them. The other kind — and this is the majority of what is actually deployed, whatever the documentation claims — signs cross-chain instructions with a backend authorization key, and the contract on the far side believes whatever that key says. SingularityNET's bridge is that second kind. So are a great many bridges you interact with every week without thinking about it.
TokenConversionManagerV3 had a one-million-FET transaction ceiling. That sounds like risk management. It is risk management, in the same way a speed limit is risk management when the sign is facing the wrong direction.
I'll come back to that.
There is also a piece of 2024 context worth pinning down, because this event did not occur in a vacuum. This has been the year the bridge layer got tested repeatedly — a $515 million bridge incident earlier in the year, Cardano's own hard fork and the network of dependencies around it. Bridges have quietly become the single most reliable place to lose money in this industry, and the reason isn't that bridge developers are worse engineers than everyone else. It's that bridges concentrate trust in a way that no other piece of infrastructure does. A DEX can be drained and the damage is bounded to one pool. A bridge can be drained and the damage propagates across every chain, every token, and every project that claimed it was "connected to the ecosystem." The connective tissue is the attack surface, and this year has been a long, expensive demonstration of that.
The contract did not fail. The instructions did.
Here is where I need to slow down, because the difference between "the code was hacked" and "the code performed exactly as written" is the entire article.

Per the forensics — Athena's on-chain work is the source I'm leaning on — the loss traced to a compromised backend authorization key, not to a bug that let an attacker bypass the bridging contract. Say it plainly: there was no bypass. There was a valid signature, presented by the wrong person, and the contract honored it. That's the architecture working.
Which moves every question downstream. Not "how do we patch the Solidity," but "how did the key get out, how long has it been out, and why was it still live five hours later."
Two structural design choices turned a key compromise into a full drain. Both are worth understanding, because both are repeatable and neither is exotic.
The first is a cap pointed the wrong way. The contract imposed a one-million-FET ceiling, but that ceiling constrained tokens leaving Ethereum — the lock side. It was never enforced on conversionIn, the function that releases funds on the return path. So the transaction that actually emptied the bridge walked straight through the gap: 8.72 million FET, extracted in one motion, against a limit that was never designed to see it.
I have seen this exact failure pattern in traditional risk systems more than once. A position limit written against the wrong leg of the trade. A stop triggering on the entry instead of the exit. A vault cap on deposits but not withdrawals. It always looks careful on the architecture diagram, and it always fails the same way, because the constraint exists to reassure rather than to constrain. When you find a cap in a contract, the first question isn't "how big is it." It's "which direction does it face, and who guards the other one." I learned to ask that question the hard way in 2020, when I was managing a $500,000 portfolio across Compound and Aave, chasing yield-farming rewards in pools paying triple-digit headline APY. When things broke, I spent months reverse-engineering the smart contract interactions line by line to understand where the exposure actually lived. What I found wasn't a bug in the protocol. It was that I had read the yields and never read the functions. The lesson stuck: yield figures are marketing, function signatures are truth.
The second is a signature that doesn't know who it's paying. The signed authorization message did not bind the final recipient address. Any valid authorization could be aimed at whatever address the caller chose. There's a clean, slightly grim way to put this — the bridge didn't sign a check with a payee. It signed a bearer instrument. Whoever holds it, whoever presents it, gets the money. Once the key leaks, the attacker doesn't just inherit authority. They inherit discretion. They can route tokens to a fresh wallet, an exchange deposit address, a contract that splits the proceeds nine ways, and the bridge has no opinion, because it was never told to have one.
Binding a signature to a recipient is not a hard engineering problem. It's a line in the message schema. The difference between "I authorize a release" and "I authorize a release to 0x…" is the difference between a bearer bond and a wire transfer. Most bridges that get this right don't advertise it. Most that get it wrong don't either.
Add those two together and you get the shape of the event. A ceiling that doesn't cover the drain path. An authorization that doesn't cover the destination. Neither is a security hole in the conventional sense. Both are omissions — the kind that survive audits because auditors look for what is present, not for what a system should have had and doesn't.
The key that should not have existed
The NuNet minter key had been dormant since March 2023.
Sit with that in the context of what a minter key actually is. A minter key is not an admin key, not a pause key, not an upgrade key. It's a printing press with a private key attached. Whoever holds it can create tokens that did not exist, out of nothing, against no collateral, with no issuance schedule, and the chain will record them as entirely legitimate — because the chain understands permissions, not intent.
And this one had been sitting unused for roughly a year and a half.
There's a name for this in security work. Zombie credentials. Keys that have outlived their purpose. Keys nobody remembers provisioning. Keys living in a config file from an integration that was deprecated. Keys belonging to a contractor who moved on. Keys that were "temporary" in early 2023 and have been temporary ever since.
In the audits I've run since 2022 with a small circle of developers I trust, this is the finding that shows up more often than Solidity bugs. Not reentrancy. Not an unchecked external call. A privileged key with no clear owner, no rotation schedule, and no monitoring on its use. Nobody builds a dashboard for "is this key still alive." Nobody sends a calendar invite titled "retire the March 2023 minter key." It doesn't surface in code review because it isn't in the code — it's in someone's key management system, or worse, in someone's .env file on a laptop that has been through three laptop refreshes.
The obvious question is what a dormant key was still doing with mint authority. The less obvious — and more important — question is what else is dormant in that same store. Because zombie credentials rarely travel alone. They accumulate. They're the sediment of every integration, every migration, every team change, every "we'll clean this up after the launch." The launch happened. The cleanup didn't.
Two keys, one operator
Now the part that escalates this from an incident to an architectural finding.
Roughly forty-five minutes before the FET bridge was emptied, the NuNet minter sent 0.3667 ETH to the wallet that would become the final receiving address. A related account moved 24.3 million NTX. The NTX selling had already started before the FET bridge was cleaned out.
That sequence rules out coincidence. These are not two hacks that happened to land on the same afternoon. This is a single operation holding two credential sets, staged in an order that betrays intent — fund the exit wallet first, begin moving the NTX position while liquidity is still present, then drain the bridge into an address that has already been prepared to receive it. That is not someone running a flash-loan bot off a YouTube tutorial. That's someone who understood both systems, understood what each key could do, and understood which order to use them in.
If the same party held a SingularityNET bridge authorization key and a NuNet minter key, then the boring explanations are all the frightening ones. A shared key management service. A shared secret store. A shared CI/CD pipeline that deploys both. A shared contractor. Or a shared human being who had both secrets in one place, on one machine, protected by one password.
A single key compromise is an incident. Two credentials from two different projects, compromised in the same window and used in the same operation, points at shared infrastructure. And shared infrastructure is not a bug you patch. It's an architecture you either accept or you don't.
I keep thinking about the Terra post-mortem era, when the mechanism was completely legible to anyone who took an afternoon with the whitepaper — and almost nobody took the afternoon. The bond mechanism was right there. The arithmetic was right there. I exited my LUNA position forty-eight hours before the algorithmic stablecoin failed, not because I'm clever, but because I'd spent 2017 learning that ideology is not a substitute for economics. This event is the mirror image of Terra. The economics were fine. The mechanism was fine. The exposure lived in a place no whitepaper describes — because nobody writes the section titled "Where Our Keys Are Kept."
408.5 million tokens, and a $940 sale
Then there's the second half of the event, the quieter half, and I think the more damaging one.
408,500,000 NTX was minted. Against NuNet's recorded token supply, that is approximately 42%. Not a rounding error. Not a treasury allocation that got misfiled. More than two-fifths of a supply, created unilaterally, by one key, in an event the token's holders had no way to prevent and no immediate way to reverse.
The sell-off is where the real information sits.
More than 217 million NTX was sold through decentralized liquidity venues. Then the pools died. Four subsequent sales totaling 38.55 million NTX moved the attacker's ETH balance by roughly 0.30 ETH — because there was nothing left in the pools to take. Another 10 million NTX was routed cross-chain through Mayan Protocol and produced approximately 940 USDT.
Ten million tokens. Nine hundred and forty dollars.
I want to be careful about what that number means, because the lazy reading is "the attacker failed." Sit with the arithmetic. What it tells you is that NTX's real market depth was so thin that an entity holding over 200 million tokens could not convert more than a fraction of it before price discovery collapsed entirely. The nominal value of what was taken and the realizable value of what was taken are separated by an order of magnitude and change. That is what "market depth" actually means when you strip away the exchange listings and the market cap widgets and the CoinGecko page — it means the amount you can sell before the price stops resembling the quote.
The detail that I think gets missed: the liquidity exhaustion was not a defense. It was an accident that looked like a defense. NTX holders did not escape dilution. The dilution exists — 42% of supply is out there, on-chain, valid, indistinguishable from any other token because chains don't have opinions about provenance. What happened is that the conversion of that dilution into a price collapse got deferred, not prevented. That isn't protection. That's a fuse.
As of September 20, the attacker's wallets still held roughly 230 million NTX and about $1.44 million in ETH. Those tokens are not gone. They're waiting. Every time NTX liquidity recovers, there is a wallet sitting on 230 million coins with demonstrated willingness to sell and no KYC relationship to protect. The first thing that happens to any future NTX rally is that somebody gets to test how deep it really goes.
There's also a supply integrity question I don't have an answer to, and I'd rather flag it than pretend otherwise. Those 408.5 million NTX are on-chain. They were minted with correct permissions, by a legitimate minter key. The protocol cannot wake up one morning and decide they're invalid, because the protocol has no opinion about intent — only about signatures. NuNet's options are the expensive ones: a burn, a buyback, a migration, governance-driven reprovisioning — or nothing at all. If it's nothing, then "fixed supply" stops meaning anything for NTX, and everyone who bought on that premise is holding a materially different asset than the one they thought they were buying. I've held through that particular kind of disappointment before. It's the slowest loss there is, because the price doesn't tell you it happened.
Five hours
And then the detail that made me set the coffee down.
Roughly five hours after the attack, the compromised FET bridge authorizer and the NuNet minter credentials had not yet been rotated or revoked.
Five hours. The FET bridge was already empty. The NTX supply was already polluted. The attacker's wallets were visible on any block explorer to anyone with a browser and a passing interest. And the keys that had just been used to accomplish all of it were still valid.
This is the failure I have the hardest time being charitable about, because it isn't a design flaw buried three layers deep in a contract. It's a decision, made repeatedly, once per minute, for three hundred minutes. In an incident, the containment clock is the entire game. Every minute a compromised credential stays live, the attacker retains the option to do it again — to hit the other side of the bridge, to mint more NTX, to wait for someone to refill the contract and take that too.
And the warning that followed is specific and correct: re-filling the FET conversion contract while the same authorizer is still trusted could simply expose new liquidity to another signature-based extraction. Which means the recovery sequence carries a hard constraint that most teams never run into. You cannot restore service and rotate keys in parallel and treat them as independent workstreams. Rotation gates restoration. Refill before rotation and you have built the attacker a fresh target with a familiar lock.
My own version of this lesson was expensive but slow rather than expensive and fast, which is the only reason I survived it. In 2017 I put $150,000 into three ICOs during the Ethereum hype cycle and lost nearly $110,000 of it — two projects vanished, the third underperformed by 70%. The failure wasn't the initial decision. The failure was the weeks I spent afterward doing nothing, telling myself the situation would clarify itself. Containment clocks don't care about your feelings. The root cause can wait for the post-mortem. The rotation cannot.
What the consensus read got wrong
By now you've read the same coverage I read. Bridge exploited. $1.55 million. AI-plus-crypto narrative bruised. Small number, move on.
I want to argue with four pieces of that framing, in descending order of how much they cost people.
The first is the number itself. $1.55 million is the least important figure in the entire event. It's a rounding error against the ecosystem's balance sheet and it will be forgotten by December. The actual loss was 42% of NTX's recorded supply. The deeper loss is that NTX can no longer credibly claim a fixed supply ceiling — because the ceiling turns out to be exactly as strong as the weakest key that can mint against it. Every token with a minter key and no rotation policy is one credential away from having this exact conversation. That is not a NuNet-specific problem. That is an industry-wide standing condition, and the only reason it isn't a headline every month is that most of those keys haven't leaked yet.
The second is the reading of the liquidity data. Everyone will report "the attacker only managed to cash out a small fraction" as though that's good news. It isn't. It's the market telling you how thin NTX really is — thin enough that an entity holding 217 million tokens couldn't liquidate without breaking the pool. And the 230 million that remain are a deferred problem, not a solved one. Thin books don't save you from a seller. They just delay the seller. When liquidity returns, the seller is still there, and now they know precisely how little it takes to move the price.
The third deserves its own paragraph, and it's the alliance. The entire thesis of the ASI consolidation was that scale is safety. Three teams, one token, one roadmap, shared engineering. But shared infrastructure is not shared resilience. Shared infrastructure is shared blast radius. WMTX, FET and NTX are connected to the same bridge ecosystem infrastructure, and the forensics did not prove WMTX was affected — but they did not rule it out either. Not proven is not excluded. And here's the tell: Bitvavo, a Dutch exchange operating under EU rules, suspended WMTX deposits and withdrawals and then stopped trading it entirely. Exchanges do not do that when they're certain. They do that when they're not. When a regulated venue takes a token offline, it's telling you more about the true state of an audit than any press release will ever say.
The fourth is the framing of the root cause. This will get filed as "a bridge hack." It wasn't. The code was verified. The source matched the public repository. The contract did what it was written to do. What failed was a key lifecycle — a dormant minter key nobody retired, a signature that never specified a recipient, a ceiling pointed at the wrong direction of flow, and a response that took five hours to even begin.
That is not a code audit failure. That is an operations failure wearing a code audit's clothes. And it leads to the uncomfortable question I keep arriving at. This industry spent four years building zk verifiers, multi-prover bridges, optimistic challenge windows, fraud proofs — genuinely good work, genuinely important work. And the actual point of failure in this event sat one layer below all of it. The verification layer was irrelevant, because the attacker never needed to fool the verifier. They had the key.
Every crash is just a story that hasn
What I'm watching, and the level that matters
Here's what I'd actually track, in order, because the order is the strategy.
First, and this gates everything else: a verified credential rotation announcement covering both the SingularityNET FET bridge authorizer and the NuNet minter. Until that's confirmed, restored bridge service isn't a recovery — it's a re-listing of the target. Do not add liquidity. Do not trust a working frontend. A green checkmark in a UI is not a rotated key, and the difference between those two things is the entire event.
Second, NuNet's treatment of the 408.5 million NTX. Burn, buyback, migration, or silence. Silence is the bearish answer and it will take longer to reach the market than a burn would, because it arrives as an absence rather than an announcement. If the supply pollution goes unaddressed, "fixed supply" becomes a marketing phrase for NTX and nothing more.
Third, the attacker's central wallets. Roughly 230 million NTX and about $1.44 million in ETH, unmoved as of September 20. Any large transfer toward a centralized venue runs straight into the on-chain forensics trail and the freeze risk attached to it. Any large transfer toward a DEX implies a market event that hasn't happened yet. Either way, that wallet is a loaded weapon sitting on a table. You don't need to watch it every hour, but you do need to know where the table is.
Fourth, Bitvavo's reinstatement of WMTX. Not because I hold WMTX — because it's the cleanest available proxy for whether the ecosystem-wide contagion was actually contained or merely unproven. When a regulated exchange turns a token back on, it means an audit concluded something. When it stays off, that's a conclusion too.
Fifth, the AGIX-to-FET conversion service and the Ethereum-side bridge, which are the most legible operating indicators across the whole ASI ecosystem. Not the price. The service. If the conversion pipeline is dark, the alliance is still in incident mode no matter what the token chart says.
And the levels that matter aren't price levels this time. They're process gates. Rotation before refill. Remediation before marketing. Audit conclusion before exchange reinstatement. When the infrastructure under an asset is compromised, price is a lagging, noisy, easily manipulated proxy for the thing you actually want to know — whether the thing you own still functions the way its documentation claims.
I'll close with the question I can't shake.
The next cycle will bring better bridges. More provers, better cryptography, thinner trust assumptions. I'll applaud all of it and I'll use it. But this event didn't happen because the cryptography was weak. It happened because a key from March 2023 was still alive in a system nobody was watching, a signature never said who it was paying, and the people who could have rotated the credentials took five hours to move.
So the question isn't whether this industry can build a trust-minimized bridge. We can. The question is whether an alliance of three teams — one of which runs a compute network with a dormant minting key nobody retired — actually knows what it owns.
I didn
If the safety of your bridge depends on a key that only one person remembers exists, how much of "decentralized infrastructure" is really just a company with an on-chain frontend? I didn't have a good answer to that in 2017. I have a worse one now.