On-chain investigationCore31 October 2026

Asking b14g for 0 CORE, 99 times in one transaction, took 97M CORE. 70% of it has not moved

Someone found a hole in a Bitcoin yield app and walked out with 97M CORE in one go. We read the transaction that did it, then followed the coins to the exchanges they reached.

At a glance
On 31 October at 09:29 UTC, one wallet emptied 91 staking orders on b14g, a Bitcoin staking app on the Core chain. It asked to withdraw 0 CORE from each one. The chain's staking code reads 0 as everything, so every order paid out in full: 97.05M CORE, worth $1.47M. The pause came 66 minutes later, after 23.4M had already left wallet A for new addresses. By that evening 68.15M had not moved. The service that paid the attacker's fees later took 11.0M of the stolen coins and passed them to MEXC.
97.05M
CORE taken in one transaction, worth $1.47M
0 CORE
Asked for in each of the 99 requests
66 min
From the drain to b14g's pause
68.15M
Coins not moved, 70% of what was taken
Key findingsEach line has its own share link
  1. 97.05M CORE

    Taken from 91 b14g staking orders in one transaction at 09:29:51 UTC on 31 October, worth $1.47M.

  2. 0 CORE

    Asked for in each of the attacker's 99 requests. The chain's staking code reads 0 as everything, so each order paid out in full.

  3. 66 min

    From the drain to b14g's pause. In that time, 23.4M left wallet A via new addresses.

  4. 68.15M

    Not moved since the morning of 31 October: 63.65M in the attacker's second wallet and 4.5M in two new wallets.

  5. 615.62 CORE

    The attacker's only fee money, sent 29 minutes before the drain by a service that later took 11.0M of the stolen coins.

  6. 66x

    How far an early post on X overstated the loss by reading the coin count as dollars. The loss was $1.47M.

01 · What happenedThe b14g hack: requests for 0 CORE took 97M

On Saturday morning, 91 staking positions on b14g were emptied at once. One transaction took 97 million CORE. At that morning's price it was worth $1.47 million. Every request in it had asked for nothing.

b14g is a Bitcoin staking app on Core, a blockchain that pays Bitcoin holders to lock up their BTC. Core has its own coin, CORE, and it pays more when a holder stakes CORE next to their bitcoin. b14g matches the two sides. Bitcoin holders open what b14g calls merge orders, CORE holders fill them with their coins, and both share the higher reward.

At 09:29 UTC, a wallet that had existed for half an hour, which we call wallet A, sent b14g a list of withdrawal requests. Each named a b14g order that the wallet had never put a coin into, and each asked for 0. Every order paid out in full, 97 million coins in all, to the wallet that asked.

b14g confirmed the theft on X seven hours later and named two attacker wallets. Core is not yet in Bitquery's own data, so we read the chain's public records directly, from the request itself to every transfer after it. The bug sat in the same withdrawal that b14g users had made every day since at least 28 October. It took b14g more than an hour to stop withdrawals, and the service that paid the attacker's fees took 11.0M of the loot later that morning.

02 · How b14g worksHow a b14g withdrawal works

Each b14g order is a small program on the chain, a contract, that holds CORE and keeps it staked with a validator, one of the computers that run the chain and earn its rewards. The bitcoin side never leaves Bitcoin. It sits in a time lock on the Bitcoin chain, locked until a set date.

To take coins out, a holder sends b14g three things: the order, its validator, and how much they want back. b14g passes the request to the staking contract, the part of Core's own code that holds every staked coin, and the coins come back.

From 28 October until the drain, 6 wallets made 8 such withdrawals through the same contract. Each asked for a set amount and got exactly that.

03 · Asking for zeroHow the b14g exploit worked: asking for 0 CORE

The attacker's request had the same shape, with one change. Every entry asked for 0 CORE.

Core's own staking code treats a request for 0 as a request for everything the staker has with that validator. Each b14g order is the staker in the chain's eyes. So when b14g passed a 0 along, the whole order came out.

Asking for 0 COREa normal b14g withdrawal next to the drain
A NORMAL WITHDRAWAL · 28 OCTOBERA holderfunded this orderAsks b14g for 940one order, its own shareStaking contractreleases 940940 backto the holderTHE DRAIN · 31 OCTOBER, 09:29:51 UTCWallet A29 minutes oldfunded no orderAsks b14g for 099 times, 91 ordersStaking contractreads 0 as "all of it"97.05M outto wallet Ab14g logged each request as 0. The staking contract logged 97,045,563 released.8 normal withdrawals from 28 October to the drain asked for 5 to 15,025 and got exactly that. Amounts in CORE.
The top row is a real withdrawal from 28 October. The bottom row is the drain at 09:29:51 UTC on 31 October. Core's staking code treats a request for 0 as a request for the whole stake.

b14g let the zeros through. Its contract logged each request as 0, and it took them from a wallet that had funded no order at all. The staking contract logged the full 97 million as released, and all of it went to the wallet that asked.

We have not seen b14g's code, so we cannot point to the faulty line. The record shows what got through: a request for nothing, from a wallet with no stake, paid in full. A single bad number did similar damage earlier this month in the WAX bridge hack, where a minus sign drained a bridge.

The orders were not small. Those holding more than 1 million coins each made up 90% of what was taken.

The 91 orders the drain emptiedCORE taken from each b14g order, largest to smallest
over 1Munder 1M0M0.5M1M1.5M2M2.5M48 orders, 90% of the totallargestsmallestTaken from each order, in CORE
The largest order gave up 2,040,000 and the smallest 788. The 48 red bars hold 90% of the 97.05M taken.

04 · No stolen keyNo stolen key and no new code

Some thefts start with a stolen key, as in the Predict.fun hack. Others start with new code pushed in a hurry. We checked both, and neither fits.

b14g's contract is a proxy, a fixed address whose logic its owners can swap. The logic it ran during the drain had been its standing version for 17 months. b14g's multisig, a wallet that needs several of its owners to sign, does upkeep by swapping in a helper and swapping the same logic back in one step. It had done that 36 times since late December, most recently the day before the hack, and each time it put the same logic back.

The attacker's wallet was new. Its only money was a small amount of CORE for fees, sent half an hour before the drain, and no b14g record named it before. Its first call to b14g was the drain itself.

05 · 66 minutes66 minutes from the b14g drain to the pause

The contract has a pause switch, which stops every withdrawal. It took 66 minutes to come on.

Eight minutes after the drain, b14g's multisig ran its usual upkeep step on seven contracts, and withdrawals stayed open. Later, a user took out 80 CORE through the same function, the normal way.

By then the attacker was moving. Within the hour, 23.4M CORE had left wallet A through a string of new addresses. Then, 42 seconds after the pause, wallet A moved the rest to a second wallet, wallet B.

66 minutes before the pauseCORE sent out from wallets A and B, 31 October 2026, UTC
0M10M20M30M40M09:3009:4510:0010:1510:3010:4511:0009:29 drain09:37 upgrade step10:35 pause66 minutes from drain to pause23.4M out before the pause33.4M out, netSent from wallets A and B to new addresses, running totalNot shown: 73.65M moved from wallet A to wallet B at 10:36:33.
The shaded band runs from the drain at 09:29:51 to the pause at 10:35:51. The dip at 10:50 is 4,999,999 sent back to wallet B.

b14g said it paused the contracts as soon as it found the problem. We cannot see when that was. The record shows the pause 66 minutes after the drain.

Time (UTC)What happenedAmount
09:00:42Wallet A gets its only funding, from service Y615.62
09:29:51Wallet A sends b14g 99 requests for 0; 91 orders pay out in full97,045,563
09:37 to 10:10Wallet A sends coins out through 11 new addresses23.4M
09:37:30b14g's multisig runs its upkeep step on 7 contracts; withdrawals stay open
09:59:12A user withdraws through the same function, the normal way80
10:15 to 11:15Service Y takes stolen coins and passes them to a MEXC deposit address11.16M
10:35:51b14g's multisig pauses the contract
10:36:33Wallet A moves the rest to wallet B73,646,178
10:41 to 10:47Wallet B sends coins to four new addresses15M
10:50One of them sends almost all of it back to wallet B4,999,999
16:38b14g posts its security update on X
17:24Core DAO posts that its network is secure
19:43Wallet B still holds its coins63,646,177

06 · Where it wentWhere the stolen CORE went: Bybit, MEXC and Gate.io

Each of the 15 new addresses received one transfer and sent it on in a single transaction. Twelve passed their coins to busy wallets, the way an exchange sweeps the deposit addresses it gives each customer into a main wallet. Two passed theirs to fresh wallets that have not moved since, and one sent almost everything back to wallet B.

Two of those twelve fed a Bybit hot wallet, the exchange's working wallet for payouts. Our address labels place the same address on Bybit's proof-of-reserves list, the wallets Bybit names on other chains to show it holds its customers' coins. The other ten fed two busy, unlabeled wallets we call service X and service Y. Both take coins through one-time deposit addresses and pass them on to large exchanges, the pattern of an exchange or a swap service.

Where the stolen CORE wentfrom wallets A and B to the wallets that received it, 31 October 2026
91 b14g ordersstaked byusersWallet A0xc556…79f1called the drainWallet B0x2775…e92cholds 63.65MService X0xa78a…814e13.4M from ABybit hot wallet0xf89d…aa404.5M from AService Y0x63c6…e1d83.5M from A, 7.5M from B2 new wallets2.0M from A, 2.5M from Bnot moved since0x911c…f1765.0M from Bsent 4,999,999 backBybit and Gate.iodeposit addressesMEXCdeposit address97.05M73.65M10:366.08M11.16MService Y also sent wallet A615.62 for fees at 09:00Amounts in CORE. White arrows leave wallet A, amber arrows leave wallet B. Services X and Y also handle other customers' coins.
Short addresses; full ones are listed at the end. Our address labels mark the Bybit hot wallet and the Bybit, Gate.io and MEXC deposit addresses. The onward amounts from services X and Y are their transfers after the drain, which mix in other customers' coins.

Within 90 minutes, service X had moved some of what it took on to addresses that our labels tag as Bybit and Gate.io deposits. Service Y passed what it took to a MEXC deposit address the same morning. These services hold other customers' coins as well, so their later transfers show where CORE went that morning. They do not prove which coins were stolen.

The address that sent its coins back took 5M CORE from wallet B and returned all but 1 CORE three minutes later. We cannot tell who controls it.

07 · The fee moneyThe service that paid the b14g attacker's fees

Every transaction on the chain costs a small fee, paid in CORE. A brand-new wallet has none, so the attacker needed some first.

Half an hour before the drain, service Y sent wallet A 615.62 CORE. It was the wallet's first and only funding. Odd amounts like that are typical when someone swaps another coin into CORE, though the record cannot show what was swapped.

Later that morning, service Y took in 11.0M of the stolen coins through four deposit addresses and passed it all to MEXC. If service Y is an exchange or a swap service, it may hold a record of the customer who paid for that fee money. It is the clearest lead we found.

08 · The claimsChecking what b14g, Core DAO and X posts said

b14g, Core DAO and posts on X described the theft within hours. In its own post, Core DAO said its network and staking contracts worked normally throughout. We checked each claim against the chain.

WhoClaimWhat the chain showsVerdict
b14gAbout 97M CORE withdrawn at 09:29 UTC97,045,563 in one transaction at 09:29:51Right
b14gAbout 68M CORE remains on Core63.65M in wallet B plus 4.5M in two unmoved wallets: 68.15MRight
b14gExchanges froze about 9M COREFreezes happen inside exchanges and do not show on the chainCan't check
b14gPaused the contracts as soon as it found the problemThe pause landed 66 minutes after the drain. When b14g found out does not show on the chainCan't check
b14gBTC staked through b14g was not affectedWe did not check the Bitcoin sideNot checked
Core DAOCore's staking contracts worked normallyThey did. They paid what b14g's orders asked forRight
Core DAOMost of the stolen coins remain on the chain70% has not movedRight
Post on XHit for "97 million dollars in CORE"$1.47M at $0.0151 a coinWrong
X trend summaryCORE fell 8% to near $0.014$0.0139 at 19:43 UTC, 8.5% lower in 24 hoursRight

One early post on X read the coin count as dollars and overstated the loss about 66 times.

09 · CORE priceCORE price after the b14g hack

The price held steady through the morning. It started to slide minutes after the first stolen coins reached the services, and lost 3% within half an hour.

CORE price on the day of the b14g hackUS dollars per CORE, every 5 minutes, 31 October 2026, UTC
$0.0130$0.0135$0.0140$0.0145$0.0150$0.015506:0009:0012:0015:0018:00drain 09:29pause 10:35$0.0139US dollars per coin, CoinGecko, 5-minute points
The price was $0.0151 at 09:25, just before the drain, and $0.0139 at 19:43. Prices from CoinGecko.

By the evening it was 8.5% lower than 24 hours earlier. The chart shows when the price moved. It cannot show who sold.

10 · What nextWhat b14g users can watch now

Most of the stolen coins have not moved. Wallet B and the two new wallets have not touched them. Together they hold 70% of the theft, which matches b14g's own figure of 68M "on Core".

70% of the stolen CORE has not movedwhere the 97.05M CORE stood at 19:43 UTC on 31 October 2026
not movedreached an exchange or serviceWallet B63.65Mhas not moved2 new wallets4.5Mhave not movedService X13.4Msent 6.08M on to Bybit and Gate.ioService Y11.0Mpassed CORE to MEXCBybit hot wallet4.5Mon Bybit's reserves listNot moved: 68.15M (70%). Reached an exchange or service: 28.9M (30%).Amounts in CORE, read from the public node at 19:43 UTC on 31 October
Wallet B and the two new wallets have sent nothing since 10:47. The blue bars show what reached exchange or service wallets.

The rest reached exchange and service wallets. b14g says exchanges have frozen about 9M of the coins. Freezes happen inside an exchange's own books, so the chain cannot confirm that figure. Two balances stand out. That evening, service X still held 9.34M CORE, and the deposit address our labels tag as Gate.io's had not passed on its coins. The chain cannot show whether either is frozen.

b14g has promised a full post-mortem. It also says the BTC staked through it stays locked on Bitcoin. We did not check the Bitcoin side. For anyone who staked through b14g, wallet B is the one to watch, and it has sent nothing since that morning. The same week, hackers drained Binance, and we traced where that money went in the Binance hack.

11 · How we checkedMethod and limits

We read the drain transaction, its payouts and every later transfer straight from Core's public node, then checked every wallet's balance on the evening of 31 October. Core Scan, Core's block explorer, gave us the lists of transfers for the two services, and we re-read each one on the node. Prices come from CoinGecko.

The exchange wallets are named from Bitquery's labels and from how the coins moved. Our address APIs do the same work on the chains Bitquery covers, and Bitquery runs this kind of tracing for clients through its crypto investigation services.

Limits on these findings

Balances were read from the chain's public node at block 40,054,403, 19:43 UTC on 31 October 2026. Anything after that is not covered.

Dollar values use CoinGecko's CORE price: $0.0151 at 09:25 UTC for the theft, and $0.0139 at 19:43 UTC for balances.

We call 0xc556 and 0x2775 wallets A and B. b14g named both as the attacker's. Services X and Y carry no label; we describe them by how they move coins.

The Bybit hot wallet's address is on Bybit's proof-of-reserves list in our labels, recorded on other EVM chains; Core uses the same addresses. The Bybit, Gate.io and MEXC deposit tags come from our labels. The Gate.io-tagged address had not swept its coins by the time of our reading.

We did not read b14g's source code. The cause described here is what the transaction records show.

We name Bybit, MEXC, Gate.io, Core DAO and CoinGecko only for the role their wallets, code or data play here. Nothing here suggests any of them did anything wrong.

12 · The addressesWhere to look

These are the wallets and transactions behind this story, each linked to Core Scan, the chain's explorer.

0xc556ed208285406d71705927f92d4f4eaea579f1
Wallet A, which sent the zero requests. view it
0x27758c30f8e424fbd8ca605bf31e9496c26ce92c
Wallet B, which holds most of the stolen coins. view it
0xe1947f325e1f0bc22290ea97dc5b2ce44827fbb56e1cc40abaeda1d2ed04f62c
The drain transaction. view it
0x04ea61c431f7934d51fed2acb2c5f942213f8967
b14g's contract (proxy). view it
0xff2a4d8f696991d5350b28fd6fbcf3c7b7f94233
b14g's multisig. view it
0x63c619d68c0f6daacf09f0a11ad03cea5f9ee1d8
Service Y, which funded wallet A. view it
0xa78a018a7df5bcb6bd5517bdb1b0cd0a379d814e
Service X. view it
0xf89d7b9c864f589bbf53a82105107622b35eaa40
Bybit hot wallet (our labels). view it
0x8251321719179b7dc5680c5722741347756753ec
MEXC deposit address (our labels). view it
0x18435b4e54a5771c77170689a86ae9b1df5fad8e
New wallet holding 2.0M. view it
0xa2cc1744a33fe73522b43d70ae2a7ff025dccae5
New wallet holding 2.5M. view it
0x911c3bf11dfc5497a53a7a04ff7980532516f176
The address that sent 4,999,999 back. view it
Run it yourself

Follow stolen coins across chains

Core is not in Bitquery's data yet, so this story was read from the chain's own public node. The exchanges at the end of the trail work across the chains Bitquery does cover. The Bitquery MCP server puts that data behind an AI assistant, so you can ask where a wallet's money went, or which labels an address carries, without writing a query.

Check any address against Bitquery's labels, as we did for the Bybit walletTrace where a wallet's money went on Ethereum, BNB Chain, Solana, Tron or BitcoinWatch an exchange deposit address for new transfersRun your own SQL over transfers and events
Explore Bitquery MCP →Records read from the chain's public node; exchange labels from Bitquery. Data read on 31 October 2026.
Legal disclaimer

This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell or hold any token or asset, or to use or avoid any protocol, exchange or service.

The findings describe transactions and balances observed on Core between May 2025 and 31 October 2026. Attributions come from Bitquery's address labels and from on-chain behaviour; they may be incomplete or incorrect and may be revised as more data becomes available.

References to b14g, Core DAO, Bybit, MEXC, Gate.io, CoinGecko, Blocmates or any other named project, company, service or person describe what the public record shows about addresses and transactions linked to them, and what those parties have said in public. They are not statements about any party's intent, practices, solvency or conduct, and nothing here asserts that any named party acted unlawfully or broke any rule or agreement.

Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.

Reported by Gaurav Agarwal for Bitquery Research, with AI tools; every figure was checked against the raw data.

FAQ

Was b14g hacked?

Yes. On the morning of 31 October, one wallet emptied 91 b14g staking orders in a single transaction. It asked to withdraw 0 CORE from each, and Core's staking code reads 0 as everything, so each order paid out in full.

How much was stolen in the b14g hack?

About 97 million CORE, worth $1.47M at the price just before the drain. One early post read the figure as dollars by mistake.

Was Core DAO hacked?

We found nothing wrong with Core itself. Its staking contract did what b14g's orders asked. The fault was in how b14g passed the requests on. Core DAO says coins staked directly with validators, or through other apps, were not touched.

Where are the stolen coins now?

On the evening of 31 October, 70% of them had not moved, most in the attacker's second wallet. The rest went to a Bybit hot wallet and two services that pass coins on to Bybit, Gate.io and MEXC.

Is BTC staked through b14g safe?

b14g says the BTC staked through it stays locked on Bitcoin and was not affected. Bitcoin staked for Core sits in a time lock on the Bitcoin chain, and the theft took CORE only. We did not check the Bitcoin side.

What happened to the CORE price after the b14g hack?

The price fell 8.5% over the 24 hours to the evening of the hack. It started to slide minutes after the first of the loot reached exchange and service wallets.

Run the next investigation in minutes

Ask any question of the blockchain. Bitquery's AI Investigations agent traces funds, attributes wallets, and writes auditable reports across every major chain. Prefer to do it yourself? Connect the Bitquery MCP server to your AI assistant, pull the raw datasets, or query the chain directly with the Bitquery API.