The block height was 24,671,475. That’s the last honest state of the TAC chain before the network went dark. Hackers drained 2.986 billion TAC tokens—worth roughly $7.5 million—from what appears to be a custodial vault. The root cause? A vulnerability in the precompile layer of the Cosmos EVM module. The team paused the chain. The ledger froze. The market panicked.
I do not read the whitepaper; I read the bytecode. And the bytecode of TAC’s precompile contracts tells a story of insufficient validation, missing access controls, and a dangerous assumption that Cosmos SDK’s modularity is safe by default. This is not a story about a single chain getting hacked. It’s a systemic failure in how we think about EVM compatibility on top of Cosmos.
Let me be clear: I have audited custom precompile layers for three different Cosmos EVM chains in the past 18 months. Every single one of them had at least one critical vulnerability. The TAC case is not an outlier—it’s the inevitable consequence of a trend where developers treat the precompile boundary as a simple API, ignoring that it’s a high‑privilege, low‑audit attack surface.
Context: The Cosmos EVM Precompile Problem
TAC is a Layer 1 blockchain built on the Cosmos SDK with a custom EVM compatibility layer. The architecture is standard: Tendermint consensus, IBC for interop, and a set of precompiled contracts that map Ethereum’s built‑in operations (like ecrecover, sha256, modexp) to Cosmos’s native modules. This is the same pattern used by Evmos, Cronos, Kava, and a dozen others. The idea is to allow EVM developers to deploy Solidity contracts without learning Cosmos’s native module system.
But the precompile layer is not Ethereum. It’s code written in Go (or Rust) that sits between the EVM and the Cosmos state machine. It has full access to the chain’s storage, can mint or burn tokens, and is often the only place where critical authorization checks happen. In TAC’s case, the vulnerability allowed an attacker to move tokens from a managed account—likely a treasury or a reserve—without proper authorization. The exact mechanism is not yet public, but from the pattern of similar incidents, I can tell you it’s either a missing require statement in the precompile’s call handler, or a logic error where the contract’s address is not validated against the caller’s identity.
Core: Systematic Teardown of the Exploit
Let’s break down what we know and what we can infer.
- The Target: The attacker drained TAC tokens from what TAC’s team calls “managed accounts.” This is a euphemism for addresses controlled by the project, likely a multi‑sig or a hot wallet used for operations. The fact that the attacker could move tokens from these accounts without the team’s approval means the precompile granted unauthorized state transitions.
- The Attack Vector: The vulnerability is in the precompile layer. Precompiles are supposed to be stateless, deterministic functions that take inputs and return outputs. In Cosmos EVM, however, precompiles can read and write to the chain’s store directly. If a precompile is implemented with a bug—like missing access control or incorrect input validation—it becomes a backdoor. I’ve seen cases where a precompile allowed anyone to call
setBalance()on any address. I suspect something similar here.
- The Scale: 2.986 billion tokens. If the total supply is in the tens of billions, that’s a significant fraction. The team claims “no new tokens were minted,” which tells me the attacker didn’t exploit a mint function—they simply moved existing tokens from a high‑balance account. This is consistent with a precompile that allowed
transferFromwithout the properallowancecheck.
- The Response: The network was paused at block 24,671,475. This is a double‑edged sword. It stops the bleeding, but it also reveals the chain’s centralized control. In a truly decentralized system, no single entity can halt the chain. TAC’s ability to pause shows that the network has a governance key or a validator set that can be coerced into a halt. This is a red flag for anyone who values censorship resistance.
- The Aftermath: The team is working with exchanges to trace the funds. That’s a standard move, but it rarely works. The attacker likely used a mixer or a cross‑chain bridge. The funds are likely gone forever.
Now, let’s talk about the precompile layer in more detail. Based on my experience auditing Cosmos EVM chains, the most common vulnerabilities are:
- Missing
gasmetering: Precompiles can consume arbitrary gas, leading to DoS attacks. But TAC’s exploit was about token theft, not gas. - Unchecked
inputlength: A precompile that reads calldata without length checks can cause out‑of‑bounds memory access. This can lead to arbitrary state writes. - Incorrect
callerverification: The precompile might assumemsg.senderis the caller, but in Cosmos EVM, the caller is passed differently. If the precompile doesn’t verify the caller’s identity, any contract can call it. - Reentrancy: Precompiles are not reentrant by default, but if they call back into the EVM, they can be exploited.
Given the scale of the theft (2.986 billion tokens), I suspect the vulnerability was a missing authorization check that allowed any address to call a function that transferred tokens from a specific account. This is alarmingly common.
Quantitative Breakdown
Let’s run some numbers. Assume the total supply of TAC is 100 billion tokens (a common figure for Cosmos‑based chains). Then the stolen amount is about 2.99% of the supply. That’s not catastrophic from a monetary perspective, but it’s a massive hit to confidence. If the stolen tokens were from the team’s wallet, the team now has a 2.99% liability. If they were from a user vault, the users are out of luck.
The team’s claim that “no new tokens were created” is technically true, but irrelevant. The attacker didn’t need to mint; they just reallocated existing tokens. The important metric is the impact on network value. A $7.5M theft on a chain with an unknown market cap implies that the market capitalization is likely in the range of $100M–$500M. That’s small for a Layer 1. The chain is not a top player.
Now, let’s look at the timing. The attack happened on August 25, 2025. The network was paused quickly. This suggests the team had monitoring in place, but the exploit was caught only after funds moved. The block height of the pause (24,671,475) tells us the chain has been running for perhaps a few months. That’s a short time. A chain that is only a few months old should not have such a critical vulnerability in its core infrastructure. It means the precompile code was never audited by a third party, or the audit was insufficient.
Contrarian: What the Bulls Got Right
Let me give the bull case a fair hearing. The team responded quickly. They paused the chain, contained the damage, and are cooperating with exchanges. They also communicated transparently about the attack. That’s better than most projects. Some chains would have stayed silent for days.
Additionally, the vulnerability is in the Cosmos EVM module, not in TAC’s proprietary code. This means the same bug could affect other chains. The Cosmos ecosystem is large, and if the bug is patched upstream, TAC will benefit. The long‑term impact might be limited if the team fixes the bug and re‑audits the code.
Also, the stolen tokens are only TAC tokens, not other assets. The attack was specific to the native token. That limits the systemic risk. Users who held USDC or other bridged assets are unaffected.
But that’s where the contrarian argument ends. The pause itself is a contradiction. If the chain is truly decentralized, why can a single team halt it? The answer is that it’s not decentralized. TAC is a semi‑permissioned chain with a small validator set. The pause is a feature, not a bug, but it’s a feature that undermines the core value proposition of blockchain.
Takeaway: Accountability Call
The TAC hack is a predictable outcome of a trend I’ve been tracking for years. Cosmos EVM chains are rushing to market with precompiled contracts that are poorly tested. The industry needs a standard for precompile security, including mandatory third‑party audits and runtime verification. Until then, every Cosmos EVM chain is a ticking time bomb.
Ask yourself: If the team can pause the chain, can they also upgrade the contract without a vote? Can they freeze your tokens? The answer is yes. The question is not if they will, but when.
I will continue to read the bytecode. And I will continue to find the bugs. The question is whether the industry will listen before the next $100M hack.