Skip to content

Repository files navigation

AutoForwarder — EIP-7702 Auto-Rescue

Защита скомпрометированного кошелька от sweeper-ботов.
ETH и ERC-20 токены автоматически уходят на безопасный адрес при поступлении.

Как работает

Взломанный кошелёк (делегирован на AutoForwarder)
    │
    ├─ ETH входит  ──► receive()  ──► немедленно на destination
    │
    └─ ERC-20 входит ──► монитор обнаруживает ──► sweep() ──► на destination

Используется EIP-7702 — взломанный кошелёк один раз делегируется на контракт и остаётся делегированным постоянно. Sweeper-бот не успевает перехватить средства.

Поддерживаемые сети

Сеть Chain ID
Base 8453
Ink 57073

Быстрый старт

npm install
cp .env.example .env
# Заполни .env

# 1. Скомпилировать контракт
npm run compile

# 2. Задеплоить на нужные сети
npm run deploy:base
npm run deploy:ink

# 3. Добавить адреса в .env (FORWARDER_BASE, FORWARDER_INK)

# 4. Установить делегацию
npm run delegate:base
npm run delegate:ink

# 5. Запустить мониторинг
npm start

Команды

Команда Описание
npm run compile Компиляция AutoForwarder.sol
npm run deploy:base Деплой + делегация на Base
npm run deploy:ink Деплой + делегация на Ink
npm run deploy:all Деплой на обе сети
npm run delegate:base Переустановить делегацию на Base
npm run delegate:ink Переустановить делегацию на Ink
npm run delegate:all Переустановить делегацию везде
npm start Запустить мониторинг

Конфигурация .env

SOURCE_PRIVATE_KEY=0x...      # Скомпрометированный кошелёк
SPONSOR_PRIVATE_KEY=0x...     # Платит газ (нужен ETH на каждой сети)
DESTINATION_ADDRESS=0x...     # Безопасный адрес получателя

FORWARDER_BASE=0x...          # Заполняется после deploy:base
FORWARDER_INK=0x...           # Заполняется после deploy:ink

RPC_URL_BASE=https://mainnet.base.org
RPC_URL_INK=https://rpc-gel.inkonchain.com

POLL_INTERVAL_MS=8000         # Интервал проверки (мс)
SPONSOR_MIN_BALANCE=0.01      # Порог предупреждения о балансе

Добавление токенов в мониторинг

Открой src/monitor.ts, найди KNOWN_TOKENS и добавь адреса:

const KNOWN_TOKENS = {
  base: [
    "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
    "0xАдресТвоегоТокена",
  ],
  ink: [
    "0xАдресТвоегоТокена",
  ],
};

Постоянная работа (VPS / сервер)

npm install -g pm2
pm2 start "npm start" --name auto-forwarder
pm2 save
pm2 startup

Структура проекта

auto-forwarder/
├── contracts/
│   └── AutoForwarder.sol   Смарт-контракт с receive() и sweep()
├── scripts/
│   └── deploy.ts           Hardhat deploy скрипт
├── src/
│   ├── networks.ts         Конфигурация сетей
│   ├── delegate.ts         Установка EIP-7702 делегации
│   └── monitor.ts          Мониторинг + sweep
├── hardhat.config.ts
├── package.json
└── .env.example

Безопасность

  • destination жёстко задан в контракте — изменить невозможно
  • ✅ ETH форвардится мгновенно через receive()
  • sweep() может вызвать любой адрес — токены всё равно уйдут на destination
  • ✅ Контракт не хранит средства
  • ⚠️ Держите спонсора пополненным — без газа sweep() не сработает
  • ⚠️ Не коммитьте .env в репозиторий

Связанные проекты

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages