Curriculum·J311 Privacy, Surveillance, and Compliance Exposure·about 35 min
Defensive hygiene
By the end of this lesson you can
- →Explain why a public ledger enables targeting in real time rather than only retrospectively
- →Compute what an attacker can and cannot afford to match in an address, and verify accordingly
- →Assemble the separation policy that bounds what any single failure reaches
- →Price the hygiene against the exposure it removes
Junior · enrolled learners
This lesson opens with The WBTC address poisoning, 3 May 2024.
- What happened
- A holder preparing to move 1,155 WBTC, about $68M at the time, first sent a small test payment to the intended address, which is routine good practice. A lookalike address entered the holder's transaction history, beginning 0xd9A1 and ending 853a91 like the intended one, so ten of its forty hexadecimal characters matched at the ends. Minutes after the test, the holder sent the full amount to the lookalike, by Chainalysis's account copied from the poisoned history. The attacker swapped most of the WBTC for ether. Negotiations opened on 10 May, with the security firm Match Systems and the Cryptex exchange taking part, and the attacker returned approximately 22,960 ETH, roughly $65.7M and more than 96 percent of the dollar value taken.
- The decision point
- No key was compromised, no contract was exploited and no approval was abused. The attack required only that the target's activity was readable while it was happening, which per J311-01 is a property of the ledger rather than a mistake anybody made. The single defeating check was comparing characters an attacker could not afford to match, and the single enabling habit was copying an address from a history that anybody can write to.
- Recorded loss
- $68,000,000
What you will be able to answer
- →Why is public activity a live risk rather than a historical one?
- →What can an attacker afford to match?
- →So what do you verify?
- →What is the separation policy?
Orientation and Year One are open: anyone can read them without an account. From Year Two onward the lessons are for enrolled learners, because progress through the later years only means anything if it is tracked against a record.
It is free. We do not sell the list and there is nothing to buy at the end of it.
Sources and review
- https://cointelegraph.com/news/wbtc-address-poisoner-all-funds-negotiations
- https://www.chainalysis.com/blog/address-poisoning-scam/
- https://decrypt.co/230081/scammers-regret-71-million-bitcoin-thief-sends-ethereum-victim
- https://www.theblock.co/post/292472/victim-loses-over-71-million-worth-of-wbtc-in-purported-address-poisoning-attack
- https://www.theblock.co/post/293908/victim-of-71-million-address-poisoning-attack-recovers-funds-following-negotiations
- https://unchainedcrypto.com/68-million-stolen-in-dust-attack-returned-to-victim/
- https://github.com/1inch/profanity2
Confidence high·Volatility low·Reviewed 2026-10-22·Owner unassigned
Contested
Reported figures for this incident range from about $68M (Chainalysis, Cointelegraph) to $71.1M (The Block, from Etherscan) depending on the WBTC price used and the moment of valuation. The return is 22,960 ETH, about $65.7M, per the Match Systems statement Cointelegraph reports; The Block put the recovered value at about $66.8M on 11 May. Chainalysis dates the return to 9 May, the day Decrypt reports a first partial refund of 52 ETH, while Cointelegraph has the return transfers beginning on 10 May. The recovery came from negotiation with the attacker rather than from any mechanism, and per J301-05 it must not be treated as a base rate for anything.
The matched characters are Decrypt's: both addresses began 0xd9A1 and ended 853a91, which is four hexadecimal characters after the 0x prefix and six at the end. Chainalysis gives the intended address as 0xd9A1b and the lookalike as 0xd9A1c, consistent with that. That the holder copied the lookalike from the poisoned history is Chainalysis's account of how address poisoning works and of this case, not a statement from the holder.
The generation rate in parts one and two is the GTX 1070 row of the profanity2 README's benchmark table, 225 million candidates per second, a consumer graphics card several generations old. The README lists an RTX 4090 at 1,361 million per second, about six times faster, and an attacker can rent many cards, so the times in the lesson are an upper bound for a determined forger rather than a typical figure. The conclusion that survives every rate is the exponent: each extra character multiplies the work by sixteen, so a lookalike can be made to match the ends and cannot be made to match the whole.
F106-03 owns personal opsec, being credentials, devices and recovery chains. This lesson owns the hygiene that follows from a public ledger specifically, being address separation, verification and the disclosed surface. Keep the split.
