Криптовалюты

Токены с комиссией за перевод: что проверить перед обменом

Fee-on-transfer уменьшает сумму на каждом transfer и может ломать маршруты DEX, депозиты и расчёт минимального результата.

Токены с комиссией за перевод: что проверить перед обменом

Некоторые токены удерживают часть суммы при каждом переводе. Контракт может сжечь эту долю, перечислить её владельцу проекта, распределить между держателями или направить в другой адрес. Такой механизм называют fee-on-transfer. Пользователь указывает отправку 100 токенов, но получатель фактически получает меньше, и это влияет не только на обычный перевод, но и на обмены, пулы ликвидности и депозиты на биржи.

Где возникает разница между отправленной и полученной суммой

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

Комиссия токена не равна комиссии сети. Газ оплачивается нативной монетой сети за выполнение транзакции, а удержание происходит в самом переводимом токене. Даже при низкой цене газа контракт может удерживать значительную долю. И наоборот, высокая сетевая комиссия не доказывает, что токен содержит налог.

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

Почему обычный маршрут DEX может завершиться ошибкой

Маршрутизатор DEX рассчитывает, сколько токенов должно поступить в пул. Если контракт удержал часть по пути, фактический вход оказывается меньше расчётного. Маршрут, который ожидает точную сумму, может отменить всю транзакцию. Другой маршрутизатор умеет измерять реально полученный баланс и поддерживает подобные токены, но это не делает сам актив безопасным.

На покупке удержание может уменьшить число токенов, поступивших в кошелёк. На продаже комиссия может примениться при отправке токена в пул, а иногда ещё одно правило срабатывает при движении из пула. В результате интерфейсный курс, price impact и минимальный результат перестают описывать всю экономику операции. Увеличение допустимого проскальзывания иногда позволяет выполнить обмен, но одновременно открывает путь к крайне невыгодной цене.

Сначала отделите налог токена от обычного движения рынка. В статье о проскальзывании и price impact показано, как читать эти показатели. Если разница появляется непосредственно в событиях transfer и повторяется даже при малой сумме, причина, вероятно, находится в логике токена.

Что проверить в контракте и транзакциях

  1. Сверьте адрес контракта по нескольким надёжным точкам в интерфейсе проекта и обозревателе.
  2. Посмотрите события Transfer в недавних покупках и продажах: сколько списано у отправителя и сколько пришло конечному получателю.
  3. Проверьте, может ли владелец контракта менять процент, исключать отдельные адреса из комиссии, останавливать переводы или ограничивать максимальную сумму.
  4. Сравните покупку и продажу. Разные условия по направлениям особенно важны перед входом в позицию.
  5. Убедитесь, что выбранная биржа или маршрутизатор прямо поддерживает фактическое поведение токена.
  6. Сделайте небольшой полный тест: покупка, перевод и продажа части токенов.

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

Депозит на биржу и добавление ликвидности

Централизованная биржа обычно зачисляет актив после того, как её система распознаёт входящий перевод и поддерживаемую сумму. Если биржа не поддерживает fee-on-transfer, депозит может прийти на технический адрес, но не пройти автоматическое зачисление. Нельзя считать, что биржа компенсирует удержанную контрактом долю. До отправки проверьте точную сеть, контракт, минимальный депозит и правила поддержки этого токена.

При добавлении ликвидности часть токенов также может исчезнуть на пути в пул. Контракт пула получит меньше, чем ожидал интерфейс, и операция отменится либо создаст иную долю. При выводе позиция может снова столкнуться с удержанием. До внесения значимой суммы проверьте обе стороны на малом объёме и учтите, что одна успешная операция не фиксирует будущий процент, если администратор способен менять параметры.

Fee-on-transfer не то же самое, что honeypot

Само удержание комиссии не означает, что токен невозможно продать. Honeypot создаёт условия, при которых покупка разрешена, а продажа блокируется или становится экономически бессмысленной. Высокий изменяемый налог может использоваться с похожим результатом, но проверять нужно конкретные правила и реальные продажи. Признаки такой ловушки перечислены в статье о honeypot-токенах.

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

Что делать, если получатель получил меньше

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

Эти сведения публичны. Seed-фраза, приватный ключ, пароль и код 2FA не требуются ни бирже, ни разработчику токена для проверки. Если неизвестный человек просит секрет ради «возврата налога», он пытается получить контроль над кошельком. Безопасное решение – остановить новые операции, проверить контракт и разрешения, а затем выбрать поддерживаемый путь выхода.