ACTFUN's exposed key: where 591 million ACT went
ACTFUN disclosed an exposed deployment key. We traced every confirmed balance change from its live contracts across Arc, Base and BNB Chain, then split what the chain proves from what remains unknown.
01 — DisclosureWhat ACTFUN said
ACTFUN posted a security update on Wednesday. It said a private key used during setup had been exposed and let someone access linked wallets and funds. Claims were paused while the team checked code control, admin rights, treasury wallets and payout code.
The notice did not publish incident tx hashes or a loss total. It also said the full scope was still being worked out. That leaves one task for the chain record: find the proved moves without filling the gaps with guesses.
02 — First movesThree ACTFUN contracts emptied
The live ACTFUN app names a fixed claim address, a Genesis NFT claim address and a sale registry. Within thirteen seconds, each sent its full ACT balance to 0x08235e…8009, which the same app names as its launch admin wallet.
| Source contract | ACT sent to 0x08235e…8009 |
|---|---|
Fixed claim · 0x039ee0…A4aC | 450,000,000 |
Genesis NFT claim · 0xFbb9E4…0837 | 100,000,000 |
Sale registry · 0xb0461a…49e8 | 40,957,595.959596 |
| Total | 590,957,595.959596 ACT |
All three source balances became zero. The wallet later sent ten million ACT to 0x83c3d4…45bcb. That address still held the full amount at our cut-off and had sent no ACT onward.
These moves line up in time and scope with ACTFUN's notice. ACTFUN has not named them as the illicit txs, so that link is reasoned from the timing and live app data.
03 — Sale checkWas the ACT sold?
No direct ACT swap has the admin wallet or the ten million ACT receiver as its tx sender in our Arc DEX records. The second wallet did not send its ACT anywhere.
The admin wallet did place ACT and USDC into a market pool. It added funds, let other wallets trade against them, then took funds out in two cycles. The exact in and out sums sit below.
| Liquidity result | Amount |
|---|---|
| ACT added | 199,932,925.202954 ACT |
| ACT removed | 82,942,162.387121 ACT |
| Net ACT left in the pool | 116,990,762.815834 ACT |
| USDC added to the pool | 20,035.00 USDC |
| USDC removed | 49,393.16 USDC |
| USDC gain over deposits | 29,358.16 USDC |
The pool share shifted toward USDC as other wallets traded. Once ACT entered the pool, it mixed with every trader's funds. The record can measure that shift. It cannot say how much ACT from the key wallet was sold.
04 — Cross-chain exit$50,178 left Arc
Two Relay routes moved USDC from Arc and paid ETH to the same address on Base. The match uses Relay's request log and both chains' send data. The exact sums and input-to-output map are in the flow card and audit file.
Nearly all the ETH reached 0x9eE203…296e, once through 0xB2b10a…1BaB and once by a direct send. Only dust stayed at the first Base wallet.

| Step | Confirmed amount |
|---|---|
| Arc · two Relay deposits | 50,178.316240 USDC |
| Base · output to 0x08235e…8009 | 20.8420973987 ETH |
| Base · held at 0x9eE203…296e | 17.4304605200 ETH |
| Base · held at 0x904e9C…697C | 3,998.516032 USDC |
| BNB Chain · held at 0xa457dd…4d67 | 4,027.269957 USDT |
One branch sold ETH for USDC, crossed through LI.FI and paid USDT on BNB Chain. The target address had no USDT outflow at the cut-off. The flow card gives each exact amount.
A second branch also sold ETH for USDC. Its full USDC output stayed at the Base address. A much smaller branch split again: most stayed parked, some entered a busy wallet where funds mixed, and a small part returned to Arc. We stop at the busy wallet because no later send can be tied to this flow without a rule for which funds left first.
05 — The $1M claimDoes the evidence show more than $1 million stolen?
The traced flow does not support that number yet. Even at the highest ACT/USDC price in our window, the marked value of all ACT moved from the three source wallets stayed below one million dollars.
The later USDC route cannot simply be added. Some of that value came from the same pool share, so the sum would count part of the flow twice. ACTFUN may find other affected assets, but they are outside the proof mapped here.
06 — Current stateWhere the funds sat at the snapshot
At the cut-off, most of the ACT still sat in the admin wallet. The second ACT wallet had not moved its share. On Base, the main later wallet still held most of its ETH. The two sale paths ended in USDC on Base and USDT on BNB Chain.
| Wallet state at 18:30 UTC | Balance |
|---|---|
| Arc admin wallet | 486,565,832.794901 ACT |
| Arc second wallet | 10,000,000 ACT |
| Base main later wallet | 17.4304605200 ETH |
| Base USDC wallet | 3,998.516032 USDC |
| BNB Chain USDT wallet | 4,027.269957 USDT |
No identity claim is made for any later wallet. A transaction proves control of a key at that moment. It does not prove a person's name, intent or link to ACTFUN.
07 — AuditHow we checked the trace
We queried Bitquery's own live clusters for Arc data, Base and BNB Chain. We checked sends against state balances, matched inputs to outputs across chains, and searched DEX trades by tx sender. Frozen rows and exact sums are kept with the article.
The audit found one event log trap. Six ACT events from the pool to the wallet did not change the wallet's state balance. Final holdings use state balances. Flow sums use sends whose state changes matched.
This trace follows fund tracing rules: value is tracked in order, a pool is treated as a mixing point, and a busy wallet ends naming. Address labels help name services. They do not turn an unknown wallet into a named person.
Readers can repeat the method with Bitquery's chain data lake or query the same chains through the Bitquery MCP server.
08 — EvidenceKey transaction hashes
| Event | Transaction hash |
|---|---|
| 450M ACT · fixed claim → admin | 0xc47eed52a320269b1eac3200781f0820036d406e1dcdeb81b5b3692771c39b79 |
| 100M ACT · Genesis claim → admin | 0x608e1aae86fb8ea20f3cc9110302f76aaecb8df635a89eb5aa57034849d7a051 |
| 40.96M ACT · sale registry → admin | 0xc294e2ab4e70149fc367a1e83808bef5c38a312005db59a02b64f73d0af6391e |
| Base output · 20.8213 ETH | 0xd75eed7e…eeb1fc |
| Base output · 0.02078 ETH | 0x6f24f3e4…c41eb3 |
| BNB Chain output · 4,027.27 USDT | 0xac1764b5…69903a |
Trace cross-chain fund flows with your own data
Query transfers, swaps and balances across Arc, Base and BNB Chain from one indexed data set.
This analysis measures confirmed transfers, DEX trades and state balances through 18:30 UTC on 16 September 2026. It infers that the three source transfers may relate to ACTFUN's disclosed key exposure because the live ACTFUN app names those contracts and the receiving admin wallet. ACTFUN has not confirmed those transaction hashes. The record does not establish who controls the later wallets or their intent, and the loss total may change if ACTFUN names more affected assets.
This article is provided for informational and educational purposes only. It reflects analysis of publicly available on-chain data as of the dates given, and does not constitute legal, financial, compliance, tax or investment advice, nor a recommendation or offer to buy, sell or hold any asset. Blockchain addresses are pseudonymous: a transaction between two addresses does not by itself establish the identity, intent or knowledge of any party, and every entity attribution here is an inference that may be incomplete or wrong. Readers should verify independently before acting on anything above, and Bitquery accepts no liability for loss arising from reliance on this material. All trademarks and company names are the property of their respective owners. Corrections and right-of-reply requests go to support@bitquery.io.