Documentation

A complete guide for recovering trapped assets from compromised wallets.


Table of Contents

1. Introduction
2. Quick Start
3. Sponsor Wallet
4. Token & NFT Rescue (/transfer)
5. NFT Mint Rescue (/mint)
6. Airdrop & Claims Rescue (/claim)
7. Companion Extension
8. Referral Program (/refer)
9. Fees & How They Work
10. Custom RPC & Transaction Broadcasting
11. Smart Contract & FAQ
12. Supported Networks
13. What RescueKit Can & Cannot Do

1. Introduction

RescueKit helps you recover trapped funds from hacked or compromised EVM wallets. By using EIP-7702, a separate clean wallet pays the gas fees so automated sweeper bots never get a chance to steal your gas. You can rescue tokens, NFTs, and unclaimed airdrops directly into a safe wallet in a single transaction.

1.1 How Sweeper Bots Work

When an account's private key or seed phrase leaks, automated MEV sweeper bots monitor the address across public transaction mempools and block builders. Sweeper bots maintain persistent RPC subscriptions listening for inbound transfers.

  1. User sends gas to the compromised wallet.
  2. Sweeper bot detects the incoming transfer.
  3. Bot drains the gas to the attacker wallet within milliseconds.
  4. The user never gets a chance to broadcast a transaction to move their funds.
  5. Trapped assets remain stuck.

Under this hostile condition, traditional transactions (eth_sendRawTransaction) fail because the account owner cannot fund the account with the native gas required to broadcast any transaction. Any gas sent to the address is stolen within milliseconds by the bot.

1.2 How EIP-7702 Solves This

EIP-7702 allows an ordinary wallet (EOA) to temporarily delegate its execution to a smart contract without changing account ownership. By signing an authorization designating the RescueKit contract (0x0000000008732229ED6Dca402A3C9EbbF31068E7), the wallet gains the ability to execute batch rescue operations.

Crucially, EIP-7702 transactions can be sponsored by a separate, clean account (the "Sponsor Wallet"). The sponsor wallet pays 100% of the gas needed to broadcast and execute the rescue. Because the compromised account never receives or holds native gas, sweeper bots never get a chance to trigger.


2. Quick Start

2.1 What You Need

2.2 How to Rescue

  1. Create a sponsor wallet in the app and deposit gas into it.
  2. Enter your compromised wallet address and select your network.
  3. Select or enter the details to rescue.
  4. Enter your clean safe destination address.
  5. Click Review and enter your compromised private key.
  6. Click Rescue to execute the rescue transaction.

3. Sponsor Wallet

The sponsor wallet is a clean burner wallet generated directly in your browser. It pays the gas fees for all your rescue transactions so your compromised wallet never needs to hold native gas.

3.1 How It Works

  1. Click Generate Sponsor Wallet at the top of any rescue page to create your sponsor wallet in one click.
  2. The wallet and its private key are generated client-side in your browser and encrypted locally using 256-bit AES-GCM.
  3. Deposit a small amount of native gas (like ETH, POL, or BNB) into your sponsor wallet on the chain you want to rescue.
  4. When you execute a rescue, the sponsor wallet broadcasts the transaction and pays the gas fees on behalf of your compromised wallet.

3.2 Managing Keys & Funds

3.3 Tips & Safety


4. Token & NFT Rescue (/transfer)

The Transfer page recovers ERC-20 tokens, native coins, and NFTs already sitting in your compromised wallet.

4.1 How It Works

  1. Enter your compromised address and select your networks. The scanner checks for tokens, native coins, and NFTs across all selected chains at the same time.
  2. You can rescue multiple tokens, multiple NFTs, or both combined at once. If you selected multiple networks, you can rescue across all of them at the same time with one click.
  3. If a token or NFT does not appear automatically, you can manually enter the contract address (and token ID for NFTs) to include it.
  4. Once confirmed via Review and Rescue, the assets are swept directly into your safe destination wallet.
  5. If an individual token or NFT transfer fails (for example, non-transferrable token or nft), it simply skips that token and continues rescuing the rest of your assets without canceling the entire transaction.

4.2 Fees


5. NFT Mint Rescue (/mint)

The Mint page lets you mint NFTs (ERC-721 or ERC-1155) from an eligible or allowlisted compromised wallet, either sweeping them straight to your safe wallet in the same transaction or executing the mint on its own.

5.1 How It Works

  1. Enter your compromised wallet address, safe destination address, and select the network where the mint takes place.
  2. Select your Mint Mode from the dropdown.
    • Mint only: executes the mint function on the contract without sweeping the new NFT out of your wallet.
    • Mint + Transfer: mints the NFT and immediately sweeps it directly to your safe wallet in the same transaction.
  3. Enter the Mint Contract Address and paste the Mint Calldata (hex). The app automatically checks the network to verify that the contract exists. (If the minting website blocks interaction due to zero gas balance, use the companion extension to capture and pre-fill this automatically.)
  4. If the mint has a mint fee in native currency, enter the amount (like 0.01 or hex 0x...) in the Mint Price field. Your sponsor wallet pays this fee for you. For free mints, leave this blank.
  5. In Mint + Transfer mode, if the NFT collection is the same contract as the mint contract, leave the NFT Contract Address blank. If the collection is a separate contract from the minting contract, enter the NFT contract address.
  6. Native tokens in your compromised wallet are swept automatically by default. In Mint + Transfer mode, you can also select existing NFTs in your wallet to sweep them in the same transaction alongside your mint.
  7. Click Review to enter your compromised private key, then click Rescue to execute the mint and sweep the NFTs directly into your safe wallet.

5.2 Finding Token IDs

Because an NFT's token ID cannot be known before minting, our contract discovers it on-chain during execution using three methods.

If an NFT contract does not support any of these methods, the minted token ID is read from the transaction receipt and an automatic follow-up rescue broadcasts immediately to recover it. However, because this requires a separate transaction, there is a brief on-chain window before it confirms where the NFT could be intercepted, even though the follow-up broadcasts immediately.

5.3 Fees


6. Airdrop & Claims Rescue (/claim)

The Claims page recovers claimable tokens from contracts like airdrops, staking, vesting, and more.

6.1 How It Works

  1. Enter your compromised address and select your network.
  2. Enter the claim contract address. The app automatically checks the network to verify that the contract exists. If the contract supports common claim functions, it is detected automatically, or you can paste your claim calldata. (If the claim site blocks interaction due to zero gas balance, use the companion extension to capture and pre-fill this automatically.)
  3. If the claim requires a native fee, enter the amount (like 0.01 or hex 0x...) in the Value field. Your sponsor wallet pays this fee for you. If no fee is required, leave it blank.
  4. The payout token is usually detected and filled in automatically, but always verify that the address is correct (or enter it manually if not detected). Native tokens are swept automatically by default, and you can also sweep existing tokens already sitting in your wallet by adding their contract addresses.
  5. If a claim rewards multiple tokens at once, you can add extra token addresses to sweep all reward tokens together in one transaction.
  6. You can add multiple claim boxes to execute different claims together at the same time.
  7. Click Review to enter your compromised private key, then click Rescue to sweep your tokens directly into your safe wallet.

6.2 Follow-Up Rescues

If an individual claim fails (for example, if it expired), it simply skips that claim and continues rescuing your other claims without canceling the entire transaction.

Always enter the correct payout tokens so everything sweeps in the first transaction. If a contract transfers extra or unexpected tokens that you did not enter, an automatic follow-up rescue broadcasts immediately to recover them. However, because this requires a separate transaction, there is a brief on-chain window where tokens could be intercepted. While the follow-up rescue is fast, there is no guarantee in that window, so always double-check your token addresses.

6.3 Fees


7. Companion Extension

The browser extension extracts transaction calldata from third-party dApps when your compromised wallet has zero gas.

7.1 The Problem It Solves

When a compromised wallet is drained by sweeper bots, its native balance is zero. Most dApps (such as airdrop portals and NFT mints) check your wallet balance before enabling interaction buttons. When they detect 0 native coin, they lock the “Claim” or “Mint” button with “Insufficient balance for gas”.

Because the button is disabled, you cannot initiate the interaction to generate the contract calldata required for recovery.

The extension solves this:

  1. Simulates a local gas balance so the dApp enables the interaction button.
  2. Intercepts the transaction payload locally in your browser before it reaches the mempool.
  3. Captures the target contract address and hex calldata, then automatically redirects to the web app with the parameters pre-filled.

7.2 Setup

  1. Install RescueKit Companion from the Chrome Web Store (pending review by Google — not live yet).
  2. Open the popup from your browser toolbar.
  3. Enter your compromised wallet address and click Save.
  4. Select the target network.

7.3 Airdrops & Claims (/claim)

  1. In the popup, set Mode to Claim.
  2. Select your target card:
    • Overwrite Card: Updates an existing claim card in the app (use the – / + buttons to choose Card #1, #2, etc.).
    • Add New Card: Creates a new claim box (useful when batching claims across different dApps into one transaction).
  3. Open the dApp and connect your wallet via the companion provider.
  4. Click Claim on the dApp.
  5. The extension intercepts the payload and automatically redirects to the /claim page with the contract address and calldata pre-filled.

7.4 NFT Mints (/mint)

  1. In the popup, set Mode to Mint.
  2. Open the minting portal and connect your wallet.
  3. Click Mint on the dApp.
  4. The extension intercepts the payload and automatically redirects to the /mint page with the contract address and calldata pre-filled.

7.5 Key Notes


8. Referral Program (/refer)

The Referral page lets you generate a personal referral link to earn on-chain commissions by helping others recover their funds from compromised wallets.

8.1 How It Works

  1. Go to the Refer & Earn page (/refer).
  2. Enter your payout address (any clean EVM wallet where you want to receive commissions).
  3. Copy your unique referral link or save the QR code to share.
  4. When someone opens your link, your payout address is remembered in their browser for their rescues.
  5. When they complete a successful rescue, 6% of the recovered assets are sent directly to your payout address in the exact same transaction.

8.2 Commissions & Payouts


9. Fees & How They Work

RescueKit collects fees on-chain during execution. Understanding how fees are charged and the order in which transfers execute ensures your assets reach your safe wallet smoothly.

9.1 Fee Breakdown by Asset

9.2 Referral Split

9.3 Transfer Order & Safe Destination Requirements


10. Custom RPC & Transaction Broadcasting

10.1 Custom RPC

10.2 Transaction Broadcasting


11. Smart Contract & FAQ

11.1 Where can I review the smart contract and extension source code?

The core protocol is powered by SponsorableBatchExecutor.sol, deployed with identical bytecode across all 20 supported EVM mainnets. The source code for both the smart contract and the browser extension is public on GitHub under 0xbatman69/rescuekit. You can also inspect the verified bytecode directly on each chain's block explorer (see Section 12 for links).

11.2 Why does the contract address show no transaction history on block explorers?

This is entirely intentional. Transactions are sent directly to your compromised wallet address rather than to the contract itself. The contract code executes directly inside your account to transfer assets straight to your safe wallet, so your tokens never pass through a middleman contract. Because the contract address is never called as the destination of a transaction, block explorers show zero transaction history on it. Unlike tools that route everything through a shared contract where every rescue is publicly logged on a single page for anyone to monitor, your transaction history stays entirely on your own wallet.

11.3 If an MEV bot or frontrunner copies my signed transaction, can they steal the funds?

No, they cannot steal anything. If an attacker copies your transaction, changes the safe address to their own, and broadcasts it with higher gas, the signature immediately becomes invalid and the transaction reverts on-chain. If they broadcast the transaction without changing the safe address, they actually do you a favor by paying your gas bill while delivering your assets straight to your safe wallet. Furthermore, on Ethereum and BSC, rescues broadcast through private relays and never touch public mempools, so bots cannot even see them. On public mempools like Polygon or Berachain, the only thing a sweeper could try is burning gas to bump your account nonce and make the rescue revert, but they can never hijack your signature to steal your funds.

Important: While an attacker cannot hijack or modify your signed rescue transaction, if they already hold your compromised private key and have native gas to broadcast their own independent transfer, you are in an active race against them. Speed is critical. Always initiate and execute your rescue as quickly as possible.

11.4 What admin privileges does the contract owner have?

The owner can transfer contract ownership, update the feeRecipient, adjust feeBps (strictly hard-capped on-chain at 15%), set affiliateCutBps, configure reserveAmount, and toggle an emergency pause. The pause is a global circuit breaker that temporarily halts new batch executions across the protocol, and the owner cannot freeze or censor individual user wallets, nor modify any other contract parameters or logic. Deployments share identical bytecode and are verified across all 20 supported chains, so anyone is free to review the source code directly on block explorers.

11.5 What is the owner wallet address, and what happens if it gets compromised?

The owner address across all deployments is 0x7f201f66C6eE48d5A65E9067065d8953eEFD9909. If this key were ever compromised, an attacker could pause new executions, increase reserveAmount, or redirect incoming protocol fees by updating the feeRecipient. However, user funds cannot be stolen because an attacker cannot bypass user signatures, cannot redirect rescued assets away from your safe destination, and cannot increase protocol fees beyond the 15% on-chain cap. Even if an attacker sets a higher reserve, those native assets simply remain untouched inside your own wallet rather than being transferred to the attacker.

11.6 Why doesn't the contract use EIP-712?

EIP-712 was designed specifically to format structured data for human review inside wallet extension popups (like MetaMask or Rabby). In RescueKit, signing happens directly in local client memory in milliseconds, so there is no interactive wallet prompt rendering typed data. Cryptographically, using toEthSignedMessageHash that binds chainid, address(this), mode, calls, and deadline provides the exact same replay protection and execution security, without the contract bytecode bloat and extra gas cost of on-chain EIP-712 domain and typehash verification across 20 chains.

11.7 What is reserveAmount? Can the owner misuse it?

No. The contract sweeps total = balance - reserve, leaving the reserve untouched in your compromised wallet rather than sending it to the owner or your safe destination. It exists solely for Monad, which enforces a 10 MON minimum balance on delegated accounts. On every other supported chain, the reserve is 0.

11.8 Why does Mode 3 follow-up NFT rescue have no deadline?

Mode 3 is designed for NFT follow-up rescues. When an NFT's token ID cannot be predicted before minting, a follow-up transaction broadcasts as fast as possible after the receipt confirms to sweep the minted token, without requiring any manual interaction. The safe destination digest is signed automatically in memory upfront, strictly authorizing the contract to sweep NFTs to your pre-configured safe wallet. Mode 3 carries a 0% protocol fee, cannot deduct any 15% protocol fee, and cannot transfer ERC-20 tokens or native currency. Because on-chain execution is restricted strictly to transferring NFTs to that pre-authorized safe address, an expiration deadline is not required.


12. Supported Networks

RescueKit is deployed and verified across 20 EVM mainnets. All deployments share the identical contract address 0x0000000008732229ED6Dca402A3C9EbbF31068E7.

Network ID Native
Ethereum ↗1ETH
Base ↗8453ETH
BNB Chain ↗56BNB
Arbitrum One ↗42161ETH
Arc ↗5042USDC
Polygon ↗137POL
Optimism ↗10ETH
Monad ↗143MON
Sonic ↗146S
Robinhood ↗4663ETH
Berachain ↗80094BERA
MegaETH ↗4326ETH
Linea ↗59144ETH
Ink ↗57073ETH
Unichain ↗130ETH
Sei ↗1329SEI
World Chain ↗480ETH
Somnia ↗5031SOMI
Plasma ↗9745XPL
Plume ↗98866PLUME

13. What RescueKit Can & Cannot Do

13.1 What RescueKit Can Do

Rescue without funding your compromised wallet with gas (your sponsor wallet pays the gas).
Rescue single or multiple tokens, native coins, and NFTs on any chain in a single transaction, or execute across multiple chains at the same time.
Mint new NFTs and sweep existing NFTs to your safe wallet in a single transaction.
Rescue single or multiple claims on any chain in a single transaction, or execute across multiple chains at the same time.

13.2 What RescueKit Cannot Do

Recover funds that were already stolen or transferred out before your rescue.
Recover funds if you enter an attacker-controlled or compromised safe destination address.
Rescue non-transferable or soulbound tokens and NFTs that cannot be moved on-chain.
Protect your sponsor wallet if you leak or compromise the sponsor wallet's own private key or seed phrase.
Guarantee newly minted NFTs are swept in the same transaction if the NFT contract does not support standard discovery methods.
Access, store, or recover your private keys or seed phrases (RescueKit is strictly non-custodial and operates 100% client-side in your local browser).
Refund protocol recovery fees or network validator gas once transactions confirm on-chain (on-chain execution is final and non-refundable).
Reverse transactions once confirmed on the blockchain.
Authorize or permit recovery operations on accounts you do not own or lack legal authorization to recover (use is strictly restricted to wallets you legally own or control).
Provide financial warranties or assume liability for lost assets, blockchain reorganizations, network latency, or user input errors (software provided 'as is').