Как читать транзакции: обмен токенов, разрешения и пулы ликвидности

Как отличить обмен от перевода, разобраться в approve и permit, внесении ликвидности и комиссиях. Пять ситуаций из практики анализа EVM-транзакций
Вступление
Токены ушли с кошелька на адрес контракта. Что произошло: перевод другому пользователю, обмен или внесение средств в пул? А иногда в истории видна операция с крупной суммой, хотя токены вообще не перемещались: пользователь лишь разрешил контракту их расходовать.
Для анализа важно понять не только, что списалось, но и что получено взамен, какие права выданы и сколько потрачено на комиссии. Иначе обычный обмен легко принять за необъяснимый вывод средств.

В предыдущей статье мы разобрали устройство транзакций Bitcoin и Ethereum. Теперь рассмотрим пять ситуаций, в которых запись в обозревателе может быть понятна, а смысл операции - неочевиден.

Примеры относятся к Ethereum и другим EVM-совместимым сетям, например BNB Chain. Они используют совместимую среду выполнения смарт-контрактов, поэтому основные принципы чтения таких операций похожи.
Обмен: один актив ушёл, другой пришёл
Swap - обмен одного криптоактива на другой. Бытовая аналогия - обмен валюты: вы отдали рубли и получили евро. Если смотреть только на списание рублей, получится весьма тревожная половина истории.

Условный пример: пользователь обменивает 1 000 USDC на ETH через децентрализованную биржу (DEX). В операции видны отправка USDC и получение ETH. Запись «компания перечислила 1 000 USDC неизвестному контракту» пропускает главное: взамен получен другой актив.

Что проверить: какой актив списан, какой получен, в каком количестве (обычно одинаковые суммы) и на какой адрес. Так же зачастую крайне важно и время между транзакциями - на тех же DEX такие обмены происходят крайне быстро и лаг между операциями будет минимальный. Затем сопоставить это с действиями контракта и событиями обмена.

Недостаточно увидеть два встречных перевода и автоматически назвать их обменом. Они должны относиться к одной понятной операции. При сложном маршруте обмен может проходить через несколько пулов, а итоговый актив может получить другой адрес.

Для анализа происхождения средств, или Source of Funds, важно сохранить эту связь: напрмиер, полученные ETH появились в результате обмена USDC. На этом история их происхождения не начинается заново.
Разрешение на списание токенов - ещё не перевод
Approve - разрешение определённому адресу, например контракту DEX (децентрализованной биржи), списывать ваши токены в пределах установленного лимита без нового подтверждения каждого списания.

Лимит может быть небольшим, например 100 USDC для одного обмена, или практически неограниченным. Во втором случае разрешение может охватывать весь текущий баланс USDC и будущие поступления, пока оно остаётся действующим. Это похоже на доверенность: можно разрешить получить одну посылку, а можно дать право забирать все следующие.

Сам approve токены не переводит. Но и считать его просто «намерением обменять» нельзя: пользователь уже предоставляет право распоряжаться конкретным активом.

Что проверить: какой токен затронут, кому выдано разрешение, каков лимит и были ли последующие списания. Например, обмен на 100 USDC завершён, но практически неограниченное разрешение осталось. Значит, проверка только суммы обмена не покажет весь сохраняющийся доступ к средствам.

Для расследования это особенно полезно: сначала пользователь мог выдать опасное разрешение (не зная или не понимая этого), а позже злоумышленник воспользовался им. Но сам approve не доказывает ни кражу, ни осознанное намерение владельца отправить деньги. Он мог быть обманут.
Пул ликвидности: средства превратились в позицию
Пул ликвидности - общий резерв криптоактивов в смарт-контракте, из которого пользователи получают токены при обмене. Например, один пользователь отдаёт USDT и получает WBTC, другой совершает обратный обмен. Резерв пополняют поставщики ликвидности. Add liquidity означает внесение активов в пул, обычно ради участия в доходе от торговых комиссий.

Простая аналогия: вы внесли товар в совместный оборот и получили документ, подтверждающий вашу долю. На вашем складе товара стало меньше, но взамен у вас есть доля в общем запасе.

В некоторых пулах долю подтверждают LP-токены (Liquidity Provider tokens - токены поставщика ликвидности). Они позволяют получить соответствующую часть активов при выходе. В других протоколах позиция может оформляться как NFT - уникальный токен с параметрами вклада. То есть пользователь может внести USDT и WBTC в пул, где эти токены обменивают друг на друга - они на балансе уменьшатся, зато появились LP-токены.

Если смотреть только на списание USDT и WBTC, можно ошибочно решить, что средства просто ушли постороннему получателю. Поэтому аналитик должен найти и проверить то, что пользователь получил взамен.

Что проверить: какие активы внесены, какая доля или позиция получена взамен и кто её контролирует. Проследите, куда поступили LP-токены или NFT и не были ли затем переданы другому владельцу. Одного перевода на контракт пула недостаточно.

Remove liquidity - вывод части или всей внесённой ликвидности. Пользователь уменьшает свою долю и получает положенные ему активы. Их количество и соотношение могут отличаться от первоначального взноса.

В некоторых протоколах уменьшение позиции и получение токенов с комиссиями выполняются отдельными командами, хотя могут входить в одну транзакцию. Поэтому проверьте не только запись о выводе ликвидности, но и фактическое поступление активов получателю.

Для анализа важна вся цепочка: внесение активов → владение позицией → вывод. Тогда вклад в пул не будет выглядеть как исчезновение средств, а возврат из него - как необъяснимый доход.
Комиссия: расходы на выполнение, а не сумма платежа
Gas - единица вычислительной работы в сети. Gas fee - плата за выполнение транзакции, по сути комиссия за операцию. Это похоже на оплату доставки: она связана с покупкой, но не входит в количество купленного товара.

Допустим, после отправки 1 ETH баланс обычного кошелька уменьшился на 1,002 ETH. Если 0,002 ETH составила сетевая комиссия, получатель получил 1 ETH. Записывать ему все 1,002 ETH неправильно.

В Ethereum комиссия за уже выполненную вычислительную работу взимается и при неуспешном исполнении. Поэтому ситуация «обмен не состоялся, а ETH стало меньше» не обязательно означает дополнительный перевод.

Что проверить: статус транзакции, фактическую сетевую комиссию и результат операции.
И не смешивайте все комиссии в одну строку. Кроме платы сети, обмен может включать комиссию пула или сервиса. Это отдельные расходы, которые могут удерживаться в токенах. Для финансовой сверки важно разделить сумму операции и затраты на её выполнение. Иначе лишний получатель появится только в отчёте аналитика.
Пример: почему «0 ETH» не означает отсутствие платежа
Contract interaction - взаимодействие со смарт-контрактом, то есть вызов программы в блокчейне. Само это название почти ничего не говорит о результате: программа может выполнить обмен, выдать разрешение, добавить ликвидность и тд.

Поле to во внешней транзакции показывает, куда направлено обращение. Если там контракт, он может передать выполнение дальше.

Представьте звонок на общий номер компании. Вы обратились в приёмную, но вопрос решал другой отдел. Здесь приёмная не конечный исполнитель, хотя телефон общий.

Например, пользователь вызывает router, или маршрутизатор обмена. Этот контракт направляет операцию через подходящие пулы. Адрес router в поле to не означает, что все средства остались у него.

Что проверить: какую команду получил контракт, какие внутренние вызовы выполнил и где в результате оказались активы. Помогают события контрактов, то есть записи об исполненных действиях, и изменения балансов.

Название функции или метка в обозревателе дают подсказку. Итоговый вывод должен опираться на результат исполнения.
Как собрать всё в понятный вывод
Условный пример: сотрудник компании сначала разрешил контракту расходовать до 10 000 USDC, затем обменял 1 000 USDC на ETH.

Если сложить лимит разрешения и сумму обмена, получится «ушло 11 000 USDC». На деле это две разные величины:
  • 10 000 USDC - установленный лимит разрешения.
  • 1 000 USDC - фактически использованная в обмене сумма.
  • Полученный ETH - результат обмена.
  • Сетевые и торговые комиссии - расходы на операцию.
Корректный вывод: «Компания обменяла 1 000 USDC на ETH. Перед обменом было выдано разрешение с лимитом 10 000 USDC». Если для проверки важна безопасность кошелька, отдельно выясняют, какое разрешение осталось после операции.

Для повседневного анализа достаточно держать перед собой четыре вопроса:
  1. Что пользователь разрешил или поручил выполнить?
  2. Какие активы фактически списались?
  3. Что и на какой адрес поступило взамен?
  4. Какие расходы составили комиссии?
Такой подход помогает не завышать суммы вывода, не терять связь между активами после обмена и понятнее объяснять происхождение средств.
Правильное чтение транзакций - одна из основ крипторасследований и проверки происхождения средств. На корпоративном обучении AML Crypto мы разбираем эти операции на практических примерах: от отдельных разрешений и обменов до восстановления всей цепочки движения активов.
Смотрите также
Управление cookies
Мы используем обязательные cookies для работы сайта, а с вашего согласия — аналитические и рекламные технологии. Подробнее: Политика cookies и Политика обработки персональных данных.
Управление cookies
Настройки cookies
Обязательные cookies
Эти технологии необходимы для:
  • открытия и корректной работы сайта;
  • обеспечения безопасности;
  • защиты от атак и злоупотреблений;
  • поддержания пользовательской сессии;
  • регистрации и авторизации в Btrace;
  • работы личного кабинета;
  • сохранения выбора пользователя в отношении cookies;
  • выполнения действия, прямо запрошенного пользователем.
Аналитические
Disabled
Аналитические технологии позволяют Компании:
  • определять количество посетителей;
  • анализировать источники переходов;
  • оценивать популярность страниц;
  • находить технические и интерфейсные проблемы;
  • изучать агрегированное поведение пользователей;
  • улучшать сайт и Btrace;
  • оценивать эффективность публикаций и изменений интерфейса.
Рекламные
Disabled
Технологии ретаргетинга и оценки рекламы могут использоваться для:
  • формирования аудиторий посетителей;
  • исключения показа нерелевантной рекламы;
  • оценки эффективности рекламных источников;
  • ограничения частоты показов;
  • ретаргетинга в рекламных системах.