Skip to main content
Your user pasted an address from their clipboard. It looked right—but it wasn’t. The first four characters matched. The last four matched. But in the middle, a scammer had swapped characters. $68 million in WBTC, gone in one transaction. This guide shows you how to protect your users from these attacks before they happen.

Why Wallets Need Security

Send Protection

Verify addresses before your users send funds to scammers

Transaction Preview

Show users what they’re signing before they sign it

Phishing Defense

Block malicious dApps before they drain wallets
Why wallet developers choose Webacy:
  • Address poisoning detection — The attack that stole $68M in one transaction
  • Transaction simulation — Show users exactly what will happen before signing
  • EIP-712 signature analysis — Catch permit phishing attacks
  • URL screening — Block known phishing sites in your dApp browser
  • Sub-500ms response times — Security without blocking the user experience

Prerequisites

Before implementing wallet security, ensure you have:
  • A Webacy API key (sign up here)
  • Basic familiarity with REST APIs or the Webacy SDK
  • Your wallet’s send flow and transaction signing identified for integration points

Send Flow Protection

The send flow is where users are most vulnerable. A simple address check can save them from losing everything.

Quick Profile Before Sending

Before showing the send confirmation, check the destination address.
Use the response to guide users:

Address Poisoning Detection

Address poisoning attacks are devastating because they exploit user trust. Scammers create addresses that look nearly identical to legitimate ones.
Real Case: In May 2024, a victim copied what they thought was their own address from transaction history. The attacker’s address matched the first and last characters perfectly. $68 million in WBTC, gone.
Can you spot the difference? Both start with 0xd9A1. Both end with 53a91. The scammer generated a vanity address specifically to match the victim’s transaction history.
Integration tip: Run this check whenever a user pastes an address. The 300ms latency is invisible to users—but catching a poisoning attack is priceless.

Sanctions Screening

Prevent users from sending to sanctioned addresses and protect your platform from regulatory risk.

Transaction Preview

Show users exactly what they’re about to sign. Transaction simulation catches drainers, malicious approvals, and unexpected asset transfers.

Pre-Signing Simulation

Simulate the transaction before the user signs to reveal what will actually happen.
Key response fields:

EIP-712 Signature Analysis

Permit signatures are the most dangerous attack vector. A user can lose everything without sending a single transaction—just by signing a message.
How Permit Phishing Works: The user signs what looks like a simple message. In reality, they’ve authorized a contract to spend all their tokens. Hours or days later, the attacker drains everything.
The max uint256 red flag: If you see value: "115792089237316195423570985008687907853269984665640564039457584007913129639935", that’s unlimited approval. Always flag this for users.

Phishing Protection

If your wallet has a dApp browser, you need URL screening.

URL Scanning

Check URLs before allowing users to connect their wallet.

Approval Management

Help users understand and manage their existing token approvals.

Get Risky Approvals

Show users their current approvals and highlight dangerous ones.
Help users clean up:
  • Show unlimited approvals prominently
  • Flag approvals to contracts that no longer exist
  • Identify approvals to known drainer contracts
  • Provide easy revoke functionality

Complete Integration Workflow

Send Flow

Transaction Signing Flow

Full TypeScript Implementation


Example Addresses for Testing

Address Poisoning

Sanctioned Addresses

Phishing & Drainers

Clean Addresses (for comparison)


API Quick Reference


Next Steps

Get Your API Key

Start protecting users today

API Reference

Complete endpoint documentation

Install the SDK

TypeScript SDK for faster integration

Risk Tags Reference

Understand what each risk means