Binance estimates a $6.3B impact from a security breach that may have started with a single engineer's compromised laptop.
Think about that. Billions of dollars may have been compromised without breaking Bitcoin, Ethereum, or even stealing the private keys. One engineer's computer may have been enough.
As an engineer, I tend to think in terms of failure points. Every additional system, every intermediary, every person with privileged access introduces another potential point of failure.
That's why I prefer self-custody for my long-term BTC and ETH.
When I hold my own coins, I need to protect my private keys, devices, and signing process. I also rely on the security of the Bitcoin or Ethereum network. That's already a serious responsibility.
When I leave those coins on a CEX, I still need to protect my account, credentials, devices, and authentication. My personal security responsibilities haven't disappeared. But now I've added the exchange's software, servers, signing infrastructure, internal permissions, employees, custody operations, and financial health. A single failure somewhere in that system could affect my assets, even if I did everything right.
Bitcoin ETFs add another structure of trust. I still have to secure my brokerage account, while depending on the broker, fund manager, custodian, and financial system. BTC treasury stocks introduce even more variables: corporate management, debt, dilution, and stock market risks. These aren't identical to CEX risks, but they are additional layers between me and the underlying Bitcoin.
AI is making attacks on people and software increasingly sophisticated and scalable. The more systems we depend on, the more opportunities we give attackers.
Of course, self-custody isn't risk-free. Losing a key or signing a malicious transaction can be devastating. And for some people, professional custody may genuinely be safer.
But for assets I intend to hold for years, I want the shortest possible chain of trust.
I hope Binance recovers the funds and makes every customer whole. This isn't an attack on Binance. It's a reminder that even the largest institutions can be vulnerable through a single human or machine.
Entities should not be multiplied beyond necessity.
In an era where every day feels like another zero-day, the last fortress of crypto may be the blockchain itself.
My keys. My responsibility. My coins.
🤖 Made with AI
Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer’s laptop, which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions. We have found no evidence of any wallet private key leak. We will share a detailed technical post-mortem once the investigation is complete and the facts are fully verified.
The estimated total impact sits at around $6.3B. We have worked with blockchain partners to freeze affected assets, with ~$3 billion frozen on-chain so far.
Binance will cover all losses from the SAFU fund and the company’s funds. User funds are safe. We will also publish an updated Proof of Reserves once the remediation is complete.
As an immediate precaution, Binance has:
- temporarily suspended deposits and withdrawals while security checks are completed;
- revoked the affected address authorisation;
- engaged law enforcement and blockchain intelligence partners to trace and recover funds.
Our teams are working around the clock to resolve this issue safely and thoroughly. We are working closely with our law enforcement partners to confirm the identity of these criminals and bring them to justice.
Please rely only on official Binance channels for updates. Please feel free to contact Binance Customer Support if you have any further questions.
binance.com/en/support/annou…
I spent over a year preserving 8 legacy NFT collections fully on Ethereum, including BAYC and Pudgy Penguins.
Now I'd love to hear what the NFT community thinks.
Should NFT images be fully onchain?
78%Yes. Absolutely.
8%No. IPFS is enough.
15%Doesn't matter.
40 votes • 2 daysCredits → Statements → $BALANCE ⇄ BARS
Jack Butcher just introduced BARS (or BURNS?)
from art to money and back again
Credits → Statements → $BALANCE ⇄ BARS
the idea is pretty simple:
• BAR #1 locks 1 BALANCE
• BAR #2 locks 2 BALANCE
• BAR #100 locks 100 BALANCE
each BAR is unique, minted in ascending order. no duplicates
u can melt your BAR anytime and get the tokens back
but here's where it gets interesting:
what if collectors value the BAR itself more than the tokens inside?
especially low serial numbers or unique works of art
those tokens could stay locked for years simply because nobody wants to destroy the art
• first 100 BARS = 5,050 BALANCE
• first 1,000 BARS = 500,500 BALANCE
nothing is permanently burned. the tokens just take another form
pretty interesting experiment in scarcity and value
Yesterday’s ApeSTR exploit created something nobody expected: a BAYC void that also works as an Ape swap shop.
The contract still holds 21 BAYC, but all 21 have lost their sale records. ApeSTR can no longer sell them through its normal functions, and there’s no upgrade or owner rescue.
1. A growing void. Those 21 Apes form a minimum locked reserve. Anyone can send more BAYC directly into the contract, increasing the number of unlisted Apes. But the existing 21 can’t simply be bought back through the strategy.
2. An Ape swap shop. Here’s the interesting part. The same exploit still allows someone to retrieve a specific Ape from the void. You put in a BAYC you no longer want, use another BAYC as a temporary catalyst, and take out the exact Ape you want. The catalyst comes back to you. One Ape enters, another leaves. The number stays the same, but the Apes inside can keep changing.
3. A different kind of burn. Next time @osseneth wants to burn another BAYC, why not send it to ApeSTR instead of the dead address? It would leave the normal market without being destroyed. Someone could swap it out someday, bringing that Ape back into circulation.
ApeSTR was built to trade Apes. Its own bug has now turned it into a strange permanent reserve where the occupants can change, but the original 21 slots can’t be emptied through normal sales.
The Apes can disappear from the market without disappearing forever.
@0xQuit @Rhynotic
gm gm here we go again.
This morning somebody abused a bug in ApeStr to swap 21 apes for 21 ApeStr-owned apes.
This was a known exploit (see the SQUIGSTR exploit from ~1 year ago) but incentive to run it was never there.
The bug lies in buyTargetNFT: it forces a strategy contract to send arbitrary calldata to any target. Afterwards it checks only three things: its BAYC balance rose by exactly 1, it owns expectedId, and "cost" equals its ETH balance drop.
This was patched in later NFTStrategy releases, but affects the original 6 (PunkSTR not affected).
The attacker bought 2 BAYC to use as bait. Using a helper contract, they prep the strategy contract by selling an ape to it for 5 wei and immediately buying it back for 6 wei. That primes the contract's ethToTwap with 6 wei.
They then call buyTargetNFT and pass the calldata to transfer an ape from ApeSTR to the helper using safeTransferFrom. This in turn hands execution over to the helper (remember, safeTransferFrom is NOT safe), which transfer TWO apes back to ApeSTR to satisfy the balance check (1 out, 2 in leaves ApeSTR at +1). It also calls processTokenTwap, which converts the 6 wei, setting the cost of one of the newly deposited apes to 7 wei (6 * 120%). The helper contract buys it back in the same tx.
example flow:
- Attacker has BAYC #1 and #2. ApeSTR has BAYC #3.
- Attacker "sells" BAYC #1 to ApeSTR for 6 wei and sends BAYC #2 to it for free, but steals BAYC #3 in the process.
- ApeSTR relists BAYC #1 for 7 wei, which the attacker buys.
- Attacker now has BAYC #1 and BAYC #3, and ApeSTR has BAYC #2 (but doesn't even know it).
The attacker ran this for all 21 BAYC in the ApeSTR contract, resulting in them being able to claim packs for all of those BAYC. Total net proceeds: $14k.
This previously affected SQUIGSTR because of their shared contract - any art blocks NFT sent in would satisfy the balance check, allowing the attacker to drain the contract of squiggles in exchange for basically valueless art blocks NFTs.
It was known to be possible on ApeSTR as well, so I guess it was just a matter of time before we saw it happen.
The unfortunate consequence is that now, ApeSTR has 21 apes that it is completely unaware of, so they cannot be bought from the contract. And 210 attacker-owned mudwater packs were dumped into bids.
On October 27, someone bought my BAYC #9765 for 6.23 ETH and sold it about two hours later for 6.01 WETH, receiving 5.9499 WETH after marketplace fees. I had already claimed its Mudwater allocation, so I followed the transactions to understand what happened in between.
The buyer used a vulnerability in ApeStrategy’s contract to cycle BAYC NFTs out of its pool, claim their Mudwater allocations, and exchange them for the next ape. 9765 served as a reusable asset in that process.
Purchase:
etherscan.io/tx/0x097ed13c0e…
The buyer also purchased BAYC 5611 for 6.25 ETH and interacted with the pool through a self-deployed contract named Arb.
The first successful exchange makes the mechanism clear. Before the transaction, the buyer held 9765 and 5611, while the pool held 1012. Afterward, the buyer held 9765 and 1012, and the pool held 5611. The buyer then redeemed 1012’s allocation of 10 Mudwater packs.
Next, the already-claimed 1012 went back into the pool in exchange for 1380. After claiming that allocation, the buyer moved on to 1561, and continued. 9765 repeatedly moved in and out as the supporting asset.
First exchange:
etherscan.io/tx/0xba21a8e4d0…
So where was the vulnerability?
ApeStrategy’s buyTargetNFT function accepts a caller-supplied target and calldata, then executes the external call from the pool itself. Afterward, it checks that the pool’s BAYC balance increased by one and that the specified expectedId now belongs to the pool.
Those conditions do not establish that the pool retained its existing NFTs.
If one ape leaves and two enter during the external call, the net balance change is still +1. If one of the incoming apes is expectedId, both checks pass—even though an existing asset has been removed.
The call’s authority matters too. Because the pool executes the external call, a call to the BAYC contract runs with the pool as the caller. The buyer’s Arb contract used the NFT receiver callback to coordinate the transfers. 9765 temporarily entered the pool to satisfy the checks and was subsequently recovered.
There was also an accounting component. The pool calculates an NFT’s purchase cost from the decrease in its ETH balance across the external call, then uses that cost to set its resale price.
During the callback, Arb invoked processTokenTwap, triggering a separate ETH expenditure inside that accounting window. That expenditure affected the apparent NFT purchase cost. The actual events recorded 9765 with a purchase cost of 6 wei and a resale price of 7 wei, after which it was recovered.
The buy and sell functions had nonReentrant protection, but this path did not require recursively entering the same purchase function. The external call could move NFTs, while the callback could reach processTokenTwap and affect the balance used for accounting.
Pool contract:
etherscan.io/address/0x9EbF9…
Buyer’s Arb contract:
etherscan.io/address/0xa395b…
Across the sequence, the buyer completed 21 successful Mudwater redemptions, burning 10 Totems each time: allocations corresponding to 210 packs across 21 different BAYCs.
In the final exchange, 9573 returned to the pool and the buyer recovered the original 5611. The buyer then sold both 9765 and 5611.
Final exchange:
etherscan.io/tx/0x7088008b2f…
Summing the BAYC transfers across these operations, the pool’s net change for every token ID was zero. The original apes were back, but their Mudwater entitlements had been consumed. This does not mean every other piece of contract state was restored.
The two initial apes cost 12.48 ETH and returned 12.0384 WETH after marketplace fees—a trading loss of 0.4416 ETH, before gas and claim costs. I verified the Ethereum-side redemptions, not the packs’ eventual Solana-side delivery or sale proceeds, so I am not claiming a final profit figure.
The evidence points to an exploit of ApeStrategy’s external-call and asset-accounting logic. It does not show repeated Mudwater claims for the same ape.
@0xQuit, @Rhynotic this is a concrete NFT custody failure mode: someone can temporarily obtain an NFT, consume its one-time entitlement, and return the original NFT. The final inventory can contain exactly the same token IDs while the economic rights attached to them have changed.
This poor BAYC #9765:
wutaner retweeted
WTF I was listening to a podcast by @ChrisWillx and realized @jackbutcher was speaking LOOOOL
He was also on there with @ShaanVP and @george__mack too omg
This is literally one of the biggest podcasts in the world!!
m.youtube.com/watch?v=n9NhSW…
OpenSea collects its 1% platform fee, while the creator's 5% royalty can simply be switched OFF.
Blur started the race to zero royalties, and OpenSea followed. Now creators who want enforceable royalties are being pushed toward ERC-721C, which introduces additional transfer validation and marketplace restrictions.
Chimpers has already migrated. Invisible Friends is preparing to do the same, even though its original contract already declares a 5% royalty through ERC-2981.
Think about this: NFT projects are being pushed to abandon their original contracts, break continuity with years of onchain history, and introduce additional transfer restrictions just to collect royalties that were already declared onchain.
And these extra dependencies carry real risks. Just last month, a vulnerability in Limit Break's Payment Processor V2 exposed thousands of NFTs, with @0xQuit leading a whitehat rescue of 23,155 NFTs. The vulnerability was in the payment processor, not ERC-721C itself, but it highlights the risks of additional trading infrastructure.
All of this is unnecessary for sales on OpenSea. ERC-2981 already provides royalty information. OpenSea can enforce those royalties on its own marketplace without forcing entire collections to migrate.
Blur and its farmers nearly killed the NFT market. Now, with its frontend shutting down, Blur itself is the one dying.
@opensea, it's time to take responsibility and start undoing the damage. Honor ERC-2981 royalties on your marketplace. No opt-out. Stop making creators sacrifice simplicity, continuity and decentralization just to get paid.
A hardware wallet should protect your assets, not put your home address at risk.
Once it's delivered, manufacturers should delete the buyer's name, phone number and shipping address. The Keystone leak is another reminder: privacy should be the default in crypto, not a luxury.
We owe you an apology.
On October 20, we detected unauthorized access to our official website. After verifying API activity with Shopify, we confirmed on October 23 that a third party obtained customer shipping information. You trusted us with those details, and we're sorry we didn't keep them safe.
Exposed: names, contact details, shipping addresses, and order details (items and prices).
Not exposed: payment card or bank details, recovery phrases, private keys, or wallet passwords.
We've blocked access, fixed the vulnerability, opened an investigation, and are emailing affected customers.
Scammers may pose as Keystone by phone, text, email, or mail, offering refunds, replacement devices, or "fixes" for your order or address. None of it is from us.
NEVER share your recovery phrase or private keys, and NEVER enter your recovery phrase into a device you didn't order. We will never ask for them. Don't click links in unexpected messages. Type keyst.one yourself.
A detailed report is coming soon.
Until then, trust only our official channels. If anything feels off, email [email protected]. We'd rather hear from you than have you take a chance.
Again, we're truly sorry to everyone affected.
Bought my first Invisible Friend last night! 👻❤️
I've already preserved BAYC, Pudgy Penguins, and six other NFT collections fully on Ethereum.
Should I bring all 5,000 Invisible Friends animations fully onchain in Oncave Season 2? 👀
@InvsbleFriends @coinbilly
PERSONAL STORY: when your NFT starts remembering your mistakes
When I first came across Balances by @jackbutcher, I saw it as nothing more than a visual representation of the amount of $BALANCE in a wallet. But the more I look into how it works, the more interesting another aspect becomes.
The NFT records your behavior through metrics like Peak balance, Times emptied, and Returns from zero.
Imagine two wallets.
Wallet #1
Bought $BALANCE, gradually increased the position, and never emptied the wallet. Times emptied = 0. Just held.
Wallet #2
Bought, the market went down, and sold everything. Times emptied +1. Then came back. Returns from zero +1. And repeated the cycle several times.
Eventually, the NFT shows not just your balance, but the history of what you did with it.
This hits close to home for me after experiencing a drawdown of around 80%. In moments like that, you don't think about how it might look in an NFT someday. You're just trying to decide: sell or hold? Buy more or wait?
And if you end up selling everything, that decision doesn't just stay in your memory. It becomes part of your onchain history.
Balances doesn't know why you sold. But it knows that you did.
And that's what I like about @jackbutcher's idea.
Two wallets can have the same balance but completely different histories.
One: I held.
The other: I left. I came back. I left again.
Over time, that history becomes part of the artwork itself.
That's why I no longer see Balances as just an NFT that displays your balance. It's more like a visual onchain diary of what you did with that balance.






















