Sentinel Voice
Online demo edition — for browsing. Voice answers use pre-generated ElevenLabs audio. The full version (live ElevenLabs voice input, sending drainer tests to your own wallet, recording on Avalanche) runs locally with npm run dev — some wallets warn on this public address because the app demonstrates drainer patterns. Source on GitHub

Sentinel for Wallets · B2B

Stop the drain before your users lose funds.

Most wallet drains don't break cryptography — they trick users into signing something their wallet didn't explain. Sentinel tests whether your wallet catches the techniques drainers actually use, and tells you exactly what to fix.

1Who's being audited

2Drainer test pack

Replay each payload through your wallet on the Fuji testnet and record what your UI did. The badge shows how Sentinel's own reference engine handles the same request.

Attack

Unlimited ERC-20 approval

Sentinel: flags it

approve(spender, 2^256−1)

How it drains: The spender can move the user's entire token balance at any time, long after the site is closed.

A safe wallet should: Show the spender and an unmistakable 'unlimited' warning, and offer to set a spending cap.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

Unlimited increaseAllowance

Sentinel: flags it

increaseAllowance(spender, huge amount)

How it drains: Same effect as an unlimited approve, but through a function some wallets don't decode.

A safe wallet should: Decode increaseAllowance the same way as approve and warn identically.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

NFT collection-wide approval

Sentinel: flags it

setApprovalForAll(operator, true)

How it drains: The operator can transfer every NFT the user owns in that collection, including ones bought later.

A safe wallet should: Warn that this grants access to ALL items, name the operator, and flag unknown operators.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

EIP-2612 Permit signature

Sentinel: flags it

eth_signTypedData_v4 · primaryType Permit

How it drains: A gasless off-chain signature that grants an allowance. No transaction appears, so users think they 'just signed in'.

A safe wallet should: Recognise Permit typed data, show it as a token approval with amount and spender, and warn on large values.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

Permit2 signature

Sentinel: flags it

eth_signTypedData_v4 · Permit2 PermitSingle

How it drains: Signs away any token already approved to Permit2 — one signature can empty balances across tokens.

A safe wallet should: Decode Permit2 messages, show token, amount, spender and expiry, and warn on unlimited amounts or far expiries.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

Blind eth_sign of a raw hash

Sentinel: flags it

eth_sign(32-byte hash)

How it drains: The user signs an opaque hash that can be any transaction. Nobody — not even the wallet — can show what it does.

A safe wallet should: Block eth_sign by default, or require an explicit advanced-mode opt-in with a severe warning.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Attack

Address poisoning (look-alike recipient)

Sentinel: flags it

transfer() to an address matching the first & last characters of a saved address

How it drains: Attackers plant look-alike addresses in the user's history; users copy the wrong one and send funds to the attacker.

A safe wallet should: Detect recipients that resemble a saved/recent address but differ, and warn before sending.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Legitimate control

Control: transfer to a saved contact

Sentinel: allows it

transfer() to a known saved address

How it drains: Legitimate — included to measure false alarms.

A safe wallet should: Proceed normally. Constant warnings on safe actions train users to ignore warnings.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

Legitimate control

Control: plain-text sign-in message

Sentinel: allows it

personal_sign(readable message)

How it drains: Legitimate — a human-readable sign-in message moves no funds.

A safe wallet should: Show the readable message and proceed without a drain warning.

The exact test payload is included only in the locally run app.

Sending live test requests to a wallet is available only in the locally run app — a public website that sends drainer-style requests is rightly flagged by wallet security tools.

What did your wallet show?

3Security controls

Signing safety

Do you simulate transactions and show balance changes before the user signs?

Signing safety

Do you decode Permit / Permit2 / typed-data signatures into human-readable approvals?

Signing safety

Is eth_sign (blind hash signing) disabled by default?

Signing safety

Do you let users edit approval amounts and warn on unlimited approvals?

Signing safety

Can users view and revoke existing approvals inside the wallet?

Phishing defence

Do you block or warn on known phishing / drainer domains and contracts?

Phishing defence

Do you detect look-alike recipient addresses (address poisoning)?

Key management

Are seed phrases encrypted at rest, never sent to your servers, and protected from screenshots/clipboard?

Key management

Do you support hardware wallets for high-value accounts?

Security process

Do you have recent third-party security audits and a public bug bounty?

Roadmap: from audit to AI-assisted penetration testing

Today's audit is a structured self-assessment. The same test pack and report format are the foundation for automated and AI-driven testing — every stage keeps the rules transparent and the results verifiable.

  1. Today · Hackathon MVP

    Drainer Readiness Audit

    A test pack of real drainer techniques that wallet teams replay through their own wallet, a security-controls review, a prioritised fix list, and an audit certificate sealed on Avalanche.

  2. Next

    Automated test harness

    An SDK and test-dApp that fire the test pack at a wallet build automatically in CI and read its responses — so every release is re-checked, not just once a year.

  3. Future

    AI-assisted penetration testing

    AI agents that generate new attack variants from fresh drainer campaigns, probe a wallet's signing flows in a sandbox, and explain each finding with a reproducible proof — always under a signed scope and the wallet company's written authorisation.

  4. Vision

    Continuous trust score

    Each audited release gets a fresh on-chain attestation, so users can check that their wallet is tested against today's attacks — not last year's.