Research/Bitcoin

Address Poisoning: How Scammers Exploit Transaction History to Steal Bitcoin

Address poisoning attacks insert look-alike addresses into your wallet history. How the attack works and how to protect yourself.

bcMaoJul 1, 2026

Address poisoning is one of the simplest and most effective scams in cryptocurrency. The attacker generates a wallet address that looks nearly identical to one you frequently send to, then slips it into your transaction history with a tiny transfer. When you later copy what you think is a familiar address, you send funds directly to the attacker. The attack requires no malware, no exploits, and no access to your private keys. It exploits a single human habit: copying addresses from recent transactions instead of verifying them character by character.

Between July 2022 and June 2024, researchers at Carnegie Mellon University documented 270 million address poisoning attempts across Ethereum and BNB Chain, targeting 17 million unique wallet addresses. Confirmed losses exceeded $83 million. In a single incident in May 2024, one victim lost $68 million in wrapped Bitcoin to a poisoned address. The attack cost the scammer $0.65 in gas fees.

How Address Poisoning Works

The attack exploits a gap between how addresses are displayed and how humans read them. A Bitcoin address like bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh is 42 characters long. An Ethereum address is 42 hex characters. Most wallet interfaces truncate addresses to show only the first and last few characters, presenting something like bc1qxy...0wlh or 0xd9A1...53a91. Users who verify only these visible portions will not catch a substitution in the middle.

Step 1: Reconnaissance

The attacker monitors the blockchain for active wallets. Because all transactions on Bitcoin and Ethereum are public, anyone can identify which addresses a target wallet sends to regularly. The attacker picks a frequently used recipient address as the template for a look-alike.

Step 2: Vanity Address Generation

Using GPU-accelerated tools, the attacker brute-forces random key pairs until finding an address that matches the first 4 to 6 and last 4 to 6 characters of the target. On Ethereum, each hex character position has 16 possibilities, so matching 8 specific characters requires roughly 2^32 (4.3 billion) attempts. Modern GPUs running tools like Profanity2 generate over 500 million addresses per second, producing a matching vanity address in roughly 72 seconds. Bitcoin's bech32 addresses use a 32-character alphabet, making brute-force somewhat harder per character, but GPU parallelism still makes matching the first and last few characters practical.

Step 3: Poisoning the History

The attacker sends a tiny amount of cryptocurrency (known as dust) from the look-alike address to the victim's wallet. On Ethereum, attackers also exploit zero-value ERC-20 transfers: the transferFrom function does not check balances or approvals when the amount is zero, allowing anyone to generate a legitimate Transfer event for just a gas fee. The poisoned address now appears in the victim's transaction history alongside legitimate transactions.

Step 4: The Victim Copies the Wrong Address

Days or weeks later, the victim needs to send funds to the same recipient. Instead of retrieving the address from an address book or direct communication, they scroll through recent transactions and copy what appears to be the correct address. Because the first and last characters match, a quick glance confirms it. The victim sends funds to the attacker's wallet.

Why it works: The attack does not compromise any cryptographic mechanism. It targets a UX pattern: the habit of reusing addresses from transaction history. No amount of encryption or key management protects against pasting the wrong address.

Attack Variants on Ethereum

The Carnegie Mellon research identified three distinct poisoning techniques on EVM chains, each exploiting different aspects of how wallets and block explorers display token transfers.

VariantMechanismInstances Found (2022-2024)
Zero-value transfersCalls transferFrom with amount 0 to emit a real Transfer event147.7 million
Counterfeit token transfersDeploys fake token contracts mimicking USDT/DAI names, emits spoofed events118.4 million
Dust transfersSends a tiny real token amount to place the address in history4 million

Zero-value transfers dominate because they cost almost nothing: only the gas fee to execute the transaction, with no token value at risk for the attacker. Etherscan began hiding zero-value token transfers by default in April 2023, but many other explorers and wallet interfaces still display them.

Address Poisoning on Bitcoin

While the most high-profile incidents have occurred on Ethereum, Bitcoin is not immune. Bitcoin addresses come in several formats: legacy P2PKH addresses starting with 1, P2SH addresses starting with 3, and native SegWit bech32 addresses starting with bc1q or bc1p (Taproot). All are long enough that users routinely check only the prefix and suffix.

Bitcoin's UTXO model provides one structural advantage: dust received as a poisoning attempt creates a distinct, identifiable UTXO. Wallet software with coin control features allows users to freeze suspicious UTXOs, preventing them from being spent and thus avoiding the address reuse implications of mixing dust with legitimate funds. However, the core vulnerability remains: if a user copies a poisoned address from their transaction history, the funds go to the attacker regardless of the underlying chain architecture.

The Clipboard Malware Variant

A related but distinct attack uses malware rather than on-chain transactions. Clipboard hijacking malware (sometimes called "crypto clippers") monitors the system clipboard for strings that match cryptocurrency address patterns. When it detects one, it silently replaces the copied address with an attacker-controlled address. Sophisticated variants use look-alike addresses that share the first few characters with the original, making visual detection harder.

Unlike on-chain address poisoning, clipboard malware requires the victim's device to be compromised. Common infection vectors include trojanized wallet applications, fake browser extensions, cracked software downloads, and malicious "optimization" tools. Trust Wallet security researchers documented a single attacker who accumulated over $560,000 using one clipboard malware variant.

Key distinction: Address poisoning is a pure social engineering attack that works against any wallet on any device. Clipboard malware is a device-level compromise that can be prevented with endpoint security. Both exploit the same final step: the user not verifying the full destination address before confirming a transaction.

Real-World Incidents

Address poisoning has produced some of the largest single-transaction losses in cryptocurrency history.

DateAmount LostDetailsOutcome
May 2024$68 million (1,155 WBTC)Attacker ran a 66-day campaign, generating 82,031 fake addresses. Poisoned address matched first 4 and last 5 characters.Funds returned after negotiation; attacker kept ~$3M from token appreciation
December 2024$50 million (USDT)Victim withdrew from Binance to a poisoned address. Attacker converted USDT to DAI within 30 minutes (to avoid Tether freeze), then moved ~16,690 ETH through Tornado Cash.Funds not recovered despite $1M bounty offer
May 2023$55,000 (USDT)US Drug Enforcement Administration (DEA) lost seized funds. Scammer created an address matching first 5 and last 4 characters of the US Marshals Service wallet.Funds swapped to ETH/BTC before Tether could freeze them
May 2025$2.6 million (USDT)Trader sent $843K, then another $1.75M three hours later to the same poisoned address.Funds not recovered

The economics are striking. The May 2024 campaign that netted $68 million required just $0.65 per poisoning transaction. Even counting the 82,031 fake addresses generated, the total campaign cost was a fraction of the return. Across the entire campaign, the attacker also collected approximately $3 million from 2,774 other victims.

The Economics of Address Poisoning

Address poisoning is cheap to execute and highly profitable for attackers. According to the Carnegie Mellon research, the most successful attack group generated $29 million in revenue against $2.7 million in costs: a net profit of $26.3 million. A second group netted $4.1 million on $12.5 million in revenue.

The low barrier to entry compounds the problem. Dark web marketplaces offer plug-and-play poisoning toolkits with tutorials and customer support. GPU rental services like vast.ai enable attackers to generate matching vanity addresses without investing in hardware. The attack scales linearly: poisoning one address costs the same as poisoning ten thousand.

Competition among attackers is also intense. In 79% of successful Ethereum-based attacks, multiple attacker groups had poisoned the same victim simultaneously. This means victims often have several look-alike addresses in their history at once, further increasing confusion.

Why Checksums Do Not Prevent Poisoning

Both Bitcoin and Ethereum use address checksum systems, but these protect against a different problem. Bitcoin's bech32 encoding includes a polynomial checksum that detects accidental typos. Ethereum's EIP-55 mixed-case checksum makes random address corruption statistically improbable: only a 0.0247% chance of a random typo passing validation.

However, checksums provide zero protection against address poisoning. The attacker's address is a real, valid address with its own valid checksum. The problem is not that the address is malformed: the problem is that the user is sending to the wrong valid address. No checksum system can detect this because the checksum only validates the address itself, not the user's intent.

How to Protect Yourself

Prevention requires changing habits and using wallet features designed for exactly this scenario.

Verify the Full Address

The single most important defense: compare every character of the destination address, not just the first and last few. This is tedious but effective. For large transactions, verify the address through a second channel: confirm via phone call, encrypted message, or in person.

Use Address Books and Whitelists

Most wallets and exchanges support saving verified addresses to an address book. Once saved, always select recipients from the book rather than from transaction history. Many exchanges offer withdrawal whitelists: once enabled, only pre-approved addresses can receive funds, and adding a new address requires a time-locked confirmation period (typically 24 to 48 hours).

Send Test Transactions

Before sending a large amount, send a small test transaction and confirm with the recipient that it arrived. This adds one extra transaction fee but eliminates the risk of losing the full amount.

Freeze Suspicious Dust

On Bitcoin, use a wallet with coin control to freeze any dust UTXOs you did not expect. This prevents them from appearing in your transaction flow and reduces the chance of accidentally referencing a poisoned address. Avoiding address reuse also limits the attacker's ability to predict which address to spoof.

Scan for Clipboard Malware

Run reputable antivirus software and keep your operating system updated. After pasting a cryptocurrency address, always compare the pasted value against the source before confirming. Some hardware wallets display the destination address on the device screen, providing a clipboard-resistant verification step.

Wallet UX Improvements

The wallet industry is slowly adopting features that make address poisoning harder to execute.

Visual Address Identifiers

Jazzicons (colorful geometric patterns) and blockies (pixelated avatars) are deterministic visual representations of addresses. Each address produces a unique image, so two addresses that differ by even one character display completely different icons. If a user is accustomed to seeing a specific visual pattern for their recipient, a poisoned address would show a strikingly different image.

Address Poisoning Detection

MetaMask launched built-in address poisoning detection in 2026, comparing pasted addresses against the user's transaction history and flagging look-alikes with a blocking warning dialog. The feature also warns on first-time sends to previously unknown addresses.

Hardware Wallet Verification

Hardware wallets like Ledger and Trezor display the full destination address on the device screen before signing. This provides an independent verification channel that clipboard malware cannot compromise. Users should compare the address shown on the hardware device against the original source.

What Wallets Should Do

  • Display full addresses (not truncated) during send confirmation, or at minimum display a larger portion than the first and last 4 characters
  • Show visual identifiers (jazzicons/blockies) alongside addresses in transaction history
  • Flag transactions from addresses that closely match but are not identical to previously used addresses
  • Warn users when they paste an address that has never been used as a recipient before
  • Filter out zero-value and suspected poisoning transactions from history by default

Structural Defenses: Payment Requests vs. Raw Addresses

The fundamental vulnerability behind address poisoning is the use of raw addresses as payment identifiers. When a user must copy, paste, and verify a long string of characters for every transaction, human error is inevitable. Payment protocols that eliminate raw address handling reduce this attack surface structurally rather than relying on user vigilance.

Lightning Network invoices ( BOLT 11) encode the payment destination, amount, and expiry into a single-use string. The recipient generates a fresh invoice for each payment, so there is no persistent address for an attacker to spoof. The newer BOLT 12 offers protocol extends this with reusable, authenticated payment requests that still avoid exposing raw node public keys.

Spark, a Bitcoin Layer 2 built on statechains, inherits Lightning compatibility through Spark Service Providers. Payments on Spark use payment requests rather than raw on-chain addresses, meaning there is no static address string sitting in a transaction history waiting to be spoofed. The request-response model ensures the recipient actively participates in each transaction, and the destination is cryptographically bound to the payment: not something a user copies from a list of recent transactions. For users looking for a Spark-powered wallet experience, General Bread demonstrates this payment-request model in practice.

Structural vs. behavioral defense: Address poisoning succeeds because users are asked to verify raw addresses manually. Payment request protocols remove the manual verification step entirely. The safest address is one the user never has to copy.

Comparing Prevention Approaches

DefenseProtects AgainstLimitations
Full address verificationAddress poisoning, clipboard malware (if done after paste)Relies on user discipline; impractical for frequent transactions
Address book / whitelistAddress poisoningDoes not help for first-time recipients
Test transactionsAddress poisoning, clipboard malwareDoubles transaction fees; adds delay
Visual identifiers (jazzicons)Address poisoningUsers must be trained to check them; not universally supported
Hardware wallet displayClipboard malwareDoes not help if user does not compare against source
Address checksums (bech32, EIP-55)Accidental typosNo protection against poisoning; attacker addresses are valid
Payment requests (Lightning, Spark)Address poisoning, address reuse, clipboard attacksRequires both parties to use a compatible protocol

What to Do If You Are Targeted

If you discover a suspicious dust transaction or unfamiliar small deposit in your wallet, the most important step is to recognize it as a potential poisoning attempt. Do not panic: receiving dust does not compromise your wallet or private keys.

  • Do not interact with or spend the dust UTXO (on Bitcoin, freeze it with coin control)
  • Mark or label the suspicious address in your wallet if the software supports it
  • Verify every outgoing transaction address against your address book, not your transaction history
  • If you have already sent funds to a poisoned address, contact the relevant exchange or stablecoin issuer immediately (Tether and Circle can freeze assets on Ethereum if notified quickly)
  • Report the incident to chain analysis services and local law enforcement

The Path Forward

Address poisoning persists because the cryptocurrency ecosystem still treats raw addresses as the default payment interface. As long as users must copy, paste, and verify 42-character strings, this attack will remain profitable. The security community is responding on multiple fronts: wallet-level detection, explorer-level filtering, and protocol-level alternatives that eliminate address handling entirely.

For developers building wallet interfaces, the lesson is clear: never present truncated addresses as a primary identifier, always support address books with first-class UX, and move toward payment request protocols wherever possible. For users, the lesson is simpler: never copy an address from your transaction history. Verify the full address, use an address book, or use a payment system that does not require you to handle raw addresses at all.

To learn more about Bitcoin's address formats and how they relate to security, see our explainers on Bitcoin address types and the Bitcoin transaction lifecycle. For a deeper look at how Layer 2 payment protocols change the security model, explore the Spark documentation.

This article is for educational purposes only. It does not constitute financial or investment advice. Bitcoin and Layer 2 protocols involve technical and financial risk. Always do your own research and understand the tradeoffs before using any protocol.