Когда я впервые подключил MetaMask к Uniswap, у меня в голове была каша. Блокчейн, смарт-контракты, кошельки — все эти термины смешались в непонятный коктейль. Но как только я разобрался в трёхуровневой архитектуре DeFi, всё встало на свои места. И главное — я перестал бояться потерять деньги.
Сейчас объясню, как работает DeFi изнутри. Без воды, с конкретными примерами и практическими выводами для безопасности. После этой статьи ты будешь понимать каждое действие в MetaMask и сможешь отличить легитимный запрос от мошеннического.
Три кита DeFi: блокчейн, смарт-контракты, интерфейс
Вся децентрализованная экосистема держится на трёх уровнях. Это не абстракция — это буквально три слоя технологий, которые работают друг с другом каждый раз, когда ты свапаешь токены или заходишь в пул ликвидности.
Уровень 1: блокчейн — фундамент всего. База данных, которая хранит состояние.
Уровень 2: смарт-контракты — программы, которые выполняют логику приложений.
Уровень 3: веб-интерфейс — сайты типа Uniswap, Aave, Curve, через которые мы взаимодействуем с первыми двумя уровнями.
Главная ошибка новичков — думать, что MetaMask или сайт биржи что-то хранят. Нет. Вся информация живёт только в блокчейне. Кошельки и сайты — это просто инструменты для взаимодействия с этой базой данных.
Уровень 1: блокчейн как единственный источник правды
Ethereum, Binance Smart Chain, Polygon, Avalanche C-Chain — все эти сети в основе своей делают одно: хранят состояние. Что такое "состояние" в контексте блокчейна?
Два типа данных в блокчейне
Балансы адресов в нативной монете
Каждый адрес (например, твой кошелёк) имеет записанный в блокчейне баланс основной монеты сети. Для Ethereum это ETH, для BSC — BNB, для Polygon — MATIC. Эта запись неизменна и прозрачна: любой может через Etherscan проверить, сколько ETH на адресе 0xd8dA....
Память смарт-контрактов
Каждый развёрнутый смарт-контракт тоже хранит свои данные в блокчейне. Например, контракт токена USDC хранит таблицу: какой адрес владеет каким количеством USDC. Контракт пула Uniswap хранит, сколько токенов А и Б находится в этом пуле прямо сейчас.
Когда я первый раз проверял свой баланс USDT через Etherscan, меня поразило: я просто запросил функцию balanceOf(myAddress) у контракта USDT, и мне вернулось число. Никакой магии — просто чтение данных из блокчейна.
Транзакции — единственный способ изменить состояние
Блокчейн — не просто база данных. Это immutable ledger, неизменяемая история. Однажды записанную транзакцию нельзя удалить или изменить. Но как тогда меняются балансы?
Через новые транзакции. Каждая транзакция делает одно из двух:
- Переводит нативную монету с одного адреса на другой (простой transfer ETH).
- Вызывает функцию смарт-контракта, который уже меняет своё внутреннее состояние (например, списывает USDC с одного адреса и зачисляет на другой).
Критически важный момент: любая транзакция должна быть подписана приватным ключом отправителя. Без подписи блокчейн отклонит транзакцию. Это основа безопасности всей системы.
Таблица: что хранится в блокчейне
| Тип данных | Пример | Где посмотреть |
|---|---|---|
| Баланс нативной монеты | 1.5 ETH на адресе 0xABC...123 | Etherscan → вкладка "Overview" |
| Баланс токена ERC-20 | 500 USDC на адресе 0xABC...123 | Etherscan → вкладка "Token Holdings" |
| Состояние смарт-контракта | 1000 ETH + 2M USDC в пуле Uniswap | Etherscan → Contract → Read Contract → getReserves() |
| История транзакций | Перевод 0.1 ETH 15.02.2026 в 14:32 | Etherscan → вкладка "Transactions" |
Вывод для безопасности: если никто не знает твой приватный ключ, никто не может создать подписанную транзакцию от твоего имени. Блокчейн просто физически не примет её. Поэтому правило номер один: храни сид-фразу офлайн.
Уровень 2: смарт-контракты — программы в блокчейне
Смарт-контракт — это код на языке Solidity (для Ethereum и EVM-совместимых сетей), который живёт по конкретному адресу в блокчейне. После деплоя его нельзя изменить. Это как каменная скрижаль: записал — и навсегда.
Два типа функций в смарт-контрактах
View-функции (читают данные)
Не меняют состояние блокчейна. Просто возвращают информацию. Примеры:
— balanceOf(address) — узнать баланс токена
— totalSupply() — общее количество токенов в обращении
— getReserves() — сколько токенов в пуле ликвидности
Эти функции бесплатные. Ты можешь вызывать их хоть тысячу раз в секунду, газ не платишь.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
State-changing функции (меняют данные)
Изменяют состояние блокчейна. Примеры:
— transfer(recipient, amount) — перевести токены
— approve(spender, amount) — дать разрешение другому контракту распоряжаться твоими токенами
— swap(tokenA, tokenB, amount) — обменять токены на Uniswap
Эти функции требуют транзакции. За каждую платишь газ. Транзакция должна быть подписана твоим приватным ключом.
Как смарт-контракты взаимодействуют с твоими токенами
Вот конкретный кейс из моей практики. Я хотел обменять USDT на WETH через Uniswap. Вот что происходило под капотом:
- Я вызвал функцию
approve()контракта USDT, разрешив контракту роутера Uniswap распоряжаться 100 USDT. - MetaMask показал мне транзакцию для подписи. Я подписал.
- Транзакция попала в блок, запись появилась в блокчейне: "Контракт
0xUniswapRouter...может тратить до 100 USDT с адреса0xСергей...". - Я вызвал функцию
swapExactTokensForTokens()роутера Uniswap. - Роутер воспользовался разрешением, списал 100 USDT с моего адреса, отправил их в пул USDT/WETH, забрал оттуда эквивалент в WETH и зачислил на мой адрес.
Всё это — две транзакции. Первая дала разрешение, вторая выполнила обмен. Обе подписаны моим ключом.
Таблица: типичные функции смарт-контрактов
| Функция | Что делает | Меняет состояние? | Нужен газ? |
|---|---|---|---|
balanceOf(address) |
Показывает баланс токена | Нет | Нет |
approve(spender, amount) |
Даёт разрешение тратить токены | Да | Да |
transfer(to, amount) |
Переводит токены | Да | Да |
swap(...) |
Обменивает токены (DEX) | Да | Да |
deposit() |
Вносит токены в протокол (Aave, Compound) | Да | Да |
withdraw(amount) |
Выводит токены из протокола | Да | Да |
Вывод для безопасности: смарт-контракт не может сам инициировать транзакцию. Он может что-то сделать с твоими токенами только если:
а) ты дал ему разрешение через approve();
б) ты вызвал его функцию, подписав транзакцию.
Значит, опасность только в том, что ты сам подпишешь вредоносную транзакцию. Контракт тебя не взломает — ты сам ему откроешь дверь.
Уровень 3: веб-интерфейс — удобное окно в блокчейн
Когда ты заходишь на app.uniswap.org или app.aave.com, ты видишь красивый сайт с кнопками, графиками, полями ввода. Но важно понять: в самом сайте ничего не хранится.
Что делает веб-интерфейс
Читает данные из блокчейна
Сайт Uniswap через библиотеку ethers.js или web3.js обращается к ноде Ethereum (обычно через Infura или Alchemy) и запрашивает:
— Какой курс ETH/USDC сейчас в пуле?
— Сколько у меня USDC на кошельке?
— Какая сейчас цена газа?
Формирует транзакции для подписи
Когда ты нажимаешь "Swap", сайт конструирует вызов функции смарт-контракта роутера Uniswap. Затем он отправляет эту транзакцию в MetaMask через метод window.ethereum.request(). MetaMask показывает тебе окно: "Подтвердить транзакцию?".
Показывает результаты
После того как ты подписал транзакцию и она попала в блок, сайт обновляет интерфейс: баланс изменился, своп выполнен.
Почему это критично для безопасности
Мошеннический сайт может сформировать любую транзакцию. Он может показать тебе одно ("Обменять 100 USDC на ETH"), а в MetaMask подсунуть другое ("Отправить все USDC на адрес мошенника").
Именно поэтому в 2025—2026 годах участились случаи с фейковыми airdrop-сайтами. Схема простая:
- В Discord или Twitter распространяется ссылка: "Клейм бесплатных токенов проекта XYZ!".
- Ты переходишь на сайт, подключаешь MetaMask.
- Нажимаешь "Claim".
- MetaMask показывает запрос на подпись транзакции. Ты не проверяешь детали и жмёшь "Подтвердить".
- На самом деле эта транзакция вызывает
approve()для всех твоих токенов илиtransferFrom(), и всё уходит мошенникам.
У меня был клиент, который потерял так $2,400 в USDT. Он кликнул на фейковую ссылку в Discord от якобы поддержки MetaMask.
Таблица: легитимный vs мошеннический сайт
| Параметр | Легитимный сайт (Uniswap) | Мошеннический сайт |
|---|---|---|
| Домен | app.uniswap.org | unıswap.com (латиница + кириллица) |
| HTTPS-сертификат | Да, от Cloudflare/Let's Encrypt | Может быть тоже валидный |
| Что показывает интерфейс | "Swap 100 USDC → ETH" | "Claim 1000 FREE tokens" |
| Что в транзакции MetaMask | Вызов swapExactTokensForTokens() на 0x68b3... |
Вызов approve() с amount = 2^256-1 (unlimited) |
| Проверка в Etherscan | Контракт верифицирован, миллионы транзакций | Контракт не верифицирован или создан вчера |
Вывод для безопасности: веб-интерфейс — это просто обёртка. Настоящая правда — в транзакции, которую показывает MetaMask. Всегда читай детали транзакции перед подписью.
7 железных правил безопасности в DeFi
Теперь, когда ты понимаешь архитектуру, вот практические правила. Я следую им с 2021 года и ни разу не был скамлен.
1. Храни приватный ключ только офлайн
Без приватного ключа никто не создаст подписанную транзакцию от твоего имени. Поэтому:
— Сид-фраза (12 или 24 слова) записана на бумаге, в сейфе или металлической пластине. Не в облаке, не в Notion, не в Telegram "Избранном".
— Никаких скриншотов сид-фразы. На компьютере могут быть вирусы, которые сканируют изображения.
— Hardware wallet для больших сумм. Ledger или Trezor держат приватный ключ изолированно. Даже если твой ПК взломан, ключ не утечёт.
Когда у меня на кошельке было $15,000 в ETH, я перевёл их на Ledger Nano X. Теперь даже если кто-то взломает мой ноутбук, подписать транзакцию без физического подтверждения на устройстве невозможно.
2. Подключение MetaMask к сайту ≠ опасность
Многие думают: "Если я подключусь к подозрительному сайту, меня взломают". Нет. Подключение — это просто разрешение сайту видеть твой адрес и запрашивать подписи транзакций.
Что происходит при подключении:
— Сайт получает твой публичный адрес (например, 0x1234...5678).
— Сайт может читать баланс этого адреса из блокчейна (публичная информация).
— Сайт НЕ может создать транзакцию без твоего явного подтверждения в MetaMask.
Что НЕ происходит:
— Сайт НЕ получает приватный ключ.
— Сайт НЕ может автоматически отправить транзакцию.
— Даже если ты отключишь MetaMask от сайта, это не изменит уже выданные разрешения смарт-контрактам (об этом ниже).
3. Управляй разрешениями токенов (approvals)
Это самая недооценённая опасность. Когда ты даёшь approve() смарт-контракту, ты буквально говоришь: "Этот контракт может в любой момент забрать у меня до N токенов".
Пример из реальности:
В 2023 году протокол Euler Finance был взломан на $200M. Уязвимость была не в том, что приватные ключи утекли, а в том, что некоторые пользователи дали unlimited approve контрактам протокола. Когда хакер эксплуатировал баг, он смог вывести все токены, на которые были разрешения.
Как защититься:
Вариант А: давай approve только на нужную сумму
Вместо unlimited (2^256-1) указывай точное количество. Например, если свапаешь 100 USDC, дай approve на 100 USDC, а не на "бесконечность".
В MetaMask это делается через кнопку "Edit permission" → "Custom spend limit".
Вариант Б: периодически отзывай разрешения
Используй инструменты:
— Revoke.cash — показывает все активные approvals для твоего адреса
— Etherscan Token Approvals — официальный инструмент
— DeBank → вкладка "Approval" — там же можно отозвать одной кнопкой
Я раз в месяц захожу на Revoke.cash, смотрю список протоколов, которым дал разрешения, и отзываю те, которыми больше не пользуюсь. Одна транзакция revoke() — это 0.0005 ETH газа, зато спокоен.
4. Проверяй транзакцию перед подписью
MetaMask показывает детали транзакции: адрес контракта, функцию, параметры. Но стандартный интерфейс MetaMask часто показывает это в hex-кодировке, непонятной человеку.
Решение: расширения для декодирования
— Stelo (бывший Pocket Universe) — показывает, что реально делает транзакция. "Ты отправляешь 1000 USDC на адрес 0xScammer..." или "Ты даёшь unlimited approve на все твои NFT".
— Fire (ex-Webacy) — ещё один симулятор транзакций. Показывает изменения баланса до выполнения.
— Wallet Guard — предупреждает о фишинговых сайтах и подозрительных контрактах.
Пример: я захожу на новый сайт для минта NFT. Нажимаю "Mint". MetaMask показывает транзакцию. Stelo декодирует: "Ты вызываешь функцию setApprovalForAll() для контракта 0xABC... — это даст право переводить ВСЕ твои NFT".
Стоп. Зачем минту NFT нужен setApprovalForAll()? Это скам. Отклоняю транзакцию.
5. Используй отдельные кошельки для рискованных действий
Даже с расширениями есть риск пропустить что-то. Поэтому я использую multi-wallet стратегию:
Кошелёк 1: холодное хранение
Ledger Nano X. Там основной капитал: ETH, BTC, стейблы. Этот кошелёк вообще не подключаю к DeFi-протоколам.
Кошелёк 2: основной DeFi
MetaMask на отдельном браузерном профиле (Chrome Profile #2). Взаимодействую только с проверенными протоколами: Uniswap, Aave, Curve, Lido. Никаких новых сайтов.
Кошелёк 3: дегенский
Ещё один MetaMask, но на другом браузере (Brave). Туда кладу 0.1 ETH и немного стейблов. Этим кошельком тестирую новые протоколы, минчу NFT, клеймлю airdrop'ы. Если что-то пойдёт не так, потеряю максимум $300, а не весь капитал.
Таблица: стратегия кошельков
| Кошелёк | Инструмент | Сумма | Для чего |
|---|---|---|---|
| Cold storage | Ledger Nano X | $50,000+ | Долгосрочное хранение, вывод с CEX |
| Main DeFi | MetaMask (профиль 1) | $5,000—$10,000 | Uniswap, Aave, Curve, Lido |
| Degen wallet | MetaMask (профиль 2) | $100—$500 | Новые протоколы, airdrop'ы, NFT-минты |
| Burner wallet | Новый MetaMask каждый раз | $0—$50 | Совсем подозрительные сайты |
6. Никогда не открывай ссылки в личных сообщениях
Это кажется очевидным, но именно так теряют деньги в 90% случаев.
🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».
Типичные сценарии:
Discord: "Привет! Ты выиграл вайтлист на наш NFT-дроп. Перейди по ссылке и заклейми: [ссылка]".
Telegram: "Служба поддержки MetaMask. У вас проблема с транзакцией. Пройдите верификацию: [ссылка]".
Email: "Твой кошелёк был скомпрометирован. Срочно переведи средства на безопасный адрес: [ссылка]".
Золотое правило: MetaMask, Uniswap, Aave и другие протоколы НИКОГДА не пишут первыми. У них нет "службы поддержки" в личке.
Если хочешь проверить информацию:
— Зайди на официальный сайт через поисковик (не по ссылке из сообщения).
— Проверь официальный Twitter проекта — там будут анонсы.
— Спроси в публичном чате Discord, но НЕ отвечай в личке.
7. Защити браузер от вредоносных расширений
Браузерные расширения имеют доступ ко всему, что ты видишь на странице. Вредоносное расширение может:
— Подменить адрес получателя при копировании из буфера обмена.
— Переадресовать тебя на фишинговый клон сайта.
— Украсть сид-фразу, если ты вводил её в веб-версии MetaMask.
Мои правила:
— Использую только проверенные расширения: MetaMask, Stelo, DefiLlama, Revoke.cash.
— Скачиваю расширения только из официального Chrome Web Store или Firefox Add-ons.
— Проверяю количество установок (если у расширения 500 пользователей, это подозрительно).
— Проверяю рейтинг и отзывы (ищу упоминания о скаме).
— Никогда не устанавливаю расширения по ссылкам из Discord/Telegram — иду на официальный сайт проекта.
Инструменты, которым я доверяю:
— Stelo — симуляция транзакций
— DefiLlama — аналитика протоколов (не требует подключения кошелька)
— Revoke.cash — управление approvals
— Tenderly — для разработчиков, но можно симулировать транзакции
Проверка адресов: первые 4 и последние 4 символа
Когда переводишь крупную сумму, всегда проверяй адрес получателя. Я делаю так:
- Копирую адрес из надёжного источника (например, официального сайта).
- Вставляю в MetaMask.
- Сравниваю первые 4 символа после
0xи последние 4 символа.
Почему именно 4+4? Потому что существуют Vanity Address Generators — инструменты, которые генерируют адреса, похожие на целевой. Но сгенерировать адрес, идентичный по первым и последним 4 символам, вычислительно дорого (требует перебора триллионов вариантов).
Пример:
Оригинальный адрес USDC: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Фейковый адрес (только первые 4 совпадают): 0xA0b8abcd1234567890abcdef1234567890abcdef
Если я проверю и первые 4, и последние 4, я сразу замечу подмену.
Скам-токены в кошельке: не трогай их
С середины 2023 года в Ethereum и BSC участились случаи токенового спама. Механизм простой:
- Скамер видит, что твой адрес активен (есть транзакции).
- Он создаёт токен с названием типа "Visit our site and claim $10,000" или "Congratulations! You won".
- Отправляет этот токен на твой адрес. Ты видишь в MetaMask: "У меня 10,000 новых токенов!".
- В описании токена или на сайте токена — ссылка на фишинговый сайт.
Что делать:
— Игнорируй эти токены. Не переходи по ссылкам.
— Не пытайся их продать или вывести. Контракт может быть написан так, что при попытке transfer() он вызовет вредоносную функцию.
— Скрой эти токены в MetaMask (Settings → Advanced → Hide token).
В моей практике был клиент, которому прислали токен с названием "UniswapAirdrop.com". Он зашёл на сайт, подключил кошелёк, нажал "Claim". Сайт запросил approve() на все его USDC. Он потерял $3,200.
Инструменты для проверки контрактов и транзакций
Прежде чем взаимодействовать с новым протоколом, я всегда проверяю контракт. Вот чек-лист:
1. Etherscan: верифицирован ли контракт?
Открываю адрес контракта в Etherscan. Ищу зелёную галочку рядом с "Contract". Если её нет — это 🚩 красный флаг.
Верифицированный контракт означает, что создатель опубликовал исходный код, и Etherscan подтвердил, что байт-код в блокчейне соответствует этому исходнику.
2. DefiLlama: есть ли протокол в листинге?
Захожу на DefiLlama.com, ищу протокол. Смотрю:
— TVL (Total Value Locked) — сколько денег в протоколе. Если меньше $100k — это либо новый протокол, либо скам.
— История TVL — если график показывает резкий рост и падение за 1 день, это pump & dump.
— Аудиты — вкладка "Audits" показывает, кто проверял код (CertiK, Trail of Bits, OpenZeppelin).
3. DeFi Safety: рейтинг безопасности
DeFi Safety даёт оценку протоколам по 100-балльной шкале. Проверяют:
— Есть ли аудит?
— Опубликован ли код?
— Есть ли тестовое покрытие?
— Есть ли multi-sig на admin-функциях?
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Если протокол набрал меньше 70% — я не инвестирую больше $500.
4. Token Sniffer: проверка токенов на скам
Token Sniffer анализирует контракт токена и выявляет:
— Honeypot (можно купить, но нельзя продать)
— Hidden mint function (владелец может печатать бесконечные токены)
— Transfer tax (при продаже списывается 99% токенов)
Вставляю адрес токена, смотрю Score. Если меньше 50 — это скам.
Что дальше
Теперь ты понимаешь, как работает DeFi на уровне архитектуры. Блокчейн хранит правду, смарт-контракты выполняют логику, веб-интерфейс — просто удобная обёртка. Безопасность строится на том, что без твоего приватного ключа никто не может создать транзакцию.
Следующий шаг — автоматизировать проверку безопасности. Я веду канал, где разбираю конкретные инструменты для защиты DeFi-активов, новые схемы скама и обзоры протоколов с точки зрения рисков. Подписывайся, чтобы не пропустить: канал «Сергей Зиненко | DeFi-Гедонист»
Если хочешь углубиться в практику, читай мои другие статьи:
— Как пользоваться MetaMask безопасно: настройка и лайфхаки
— Что такое смарт-контракт простыми словами
— Лучшие DeFi-протоколы 2026: рейтинг по доходности и рискам
FAQ
Что такое DeFi и как оно работает?
DeFi (Decentralized Finance) — это финансовые приложения на блокчейне без посредников. Работает через три уровня: блокчейн (база данных состояния), смарт-контракты (программная логика) и веб-интерфейс (сайты для взаимодействия). Все данные хранятся в блокчейне, транзакции подписываются твоим приватным ключом, смарт-контракты выполняют операции автоматически.
Может ли смарт-контракт украсть мои токены?
Смарт-контракт не может украсть токены сам по себе. Он может распоряжаться твоими токенами только если ты дал ему разрешение через функцию approve(). Это разрешение выдаётся путём подписания транзакции твоим приватным ключом. Без твоей подписи контракт ничего не сделает.
Безопасно ли подключать MetaMask к новым сайтам?
Само подключение MetaMask безопасно — сайт получает только твой публичный адрес. Опасность возникает, когда ты подписываешь транзакции. Мошеннический сайт может подсунуть транзакцию, которая даст ему доступ к твоим токенам. Используй расширения типа Stelo для проверки транзакций перед подписью.
Как проверить, что смарт-контракт безопасный?
Проверь контракт в Etherscan: должен быть верифицирован (зелёная галочка). Посмотри на DefiLlama: какой TVL и есть ли аудиты. Проверь на Token Sniffer: нет ли honeypot или скрытых функций. Если контракт новый (меньше месяца), TVL маленький или аудита нет — используй отдельный кошелёк с минимальной суммой.
Что делать, если случайно подписал подозрительную транзакцию?
Немедленно зайди на Revoke.cash и отзови все approvals для подозрительного контракта. Если транзакция ещё в mempool (не подтверждена), попробуй отправить новую транзакцию с тем же nonce и более высоким газом — это заменит первую. Если токены уже ушли, отследи через Etherscan, куда они попали, и сообщи в поддержку биржи (если мошенники попытаются вывести через CEX).