TON и токены: переводы
Из чего складывается комиссия
Комиссия за отправку TON или токенов в сети TON рассчитывается локально в приложении на основе текущей конфигурации сети и параметров сообщения. В расчет входят:- Storage: комиссия за использование ячеек контракта; зависит от объема данных и сетевых тарифов.
- Import message: комиссия за обработку входящего внешнего сообщения, которым пользователь инициирует транзакцию.
- Gas: комиссия за исполнение кода; зависит от количества исходящих сообщений, где одно сообщение требует меньше газа, а несколько — больше; в коде используются фиксированные значения газа для 1-4 сообщений.
- Forward fees: комиссия за доставку каждого исходящего сообщения по сети.
Кто платит
Комиссию всегда платит отправитель в TON. Если на балансе аккаунта недостаточно TON, отправить ни TON, ни токены нельзя. Исключение — gasless-сценарий для поддерживаемых jetton, описанный ниже.Где это показывается
Перед отправкой перевода, будь то TON или токен, на экране предпросмотра показывается строка с комиссией в TON и, при необходимости, в фиатном эквиваленте. Для простых переводов используется блок “Network fee” с кратким описанием и, если доступно, кнопкой “more details”.Gasless
Gasless — это возможность оплатить комиссию за перевод токена самим токеном, например USDT, а не в TON. Комиссию в TON за пользователя оплачивает relayer, то есть сервис Tonhub, а эквивалент удерживается с пользователя в переводимом токене.Когда доступно
- Поддерживается только для определенных токенов, список которых задается backend-конфигом
gas_jettons. - Доступно только для кошелька W5, то есть
v5R1; для других версий gasless не предлагается. - Конфигурация, включая список токенов и адрес relayer, запрашивается у Tonhub API:
gasless/mainnetилиgasless/testnet→config. В конфиге указываютсяrelay_addressи массивgas_jettons, то естьmaster_id.
Как рассчитывается gasless-комиссия
Перед отправкой приложение запрашивает gasless-оценку: выполняется запрос кgasless/.../estimate с параметрами, такими как адрес кошелька, публичный ключ и сообщения в формате BOC. В ответе содержатся:
- relay_address — адрес relayer;
- commission — комиссия, которая будет списана с пользователя в токене;
- from — адрес, с которого будет произведено списание;
- valid_until — срок действия оценки;
- messages — итоговые сообщения с учетом комиссии.
gasless/.../send; relayer отправляет ее в сеть и оплачивает gas в TON.
Ограничения и ошибки
- Cooldown: между gasless-переводами может потребоваться пауза в несколько минут; иначе пользователю предложат подождать или оплатить комиссию в TON.
- Недостаточно средств: если сумма перевода вместе с комиссией в токене превышает баланс, gasless становится недоступен — нужно уменьшить сумму или платить в TON.
- Try later / Not enough: при ошибках оценки или отправки пользователь видит сообщение “Try later” или “Insufficient funds” и при необходимости может переключиться на оплату комиссии в TON.
SOL и SPL-токены: переводы
Комиссия за отправку SOL или SPL tokens в сети Solana не рассчитывается внутри приложения. Она запрашивается у backend Tonhub: POST на/solana/transaction/fees/mainnet или devnet с телом { transaction }, то есть сериализованной транзакцией. В ответе возвращается объект с полем value — это комиссия, которая отображается пользователю в SOL и, если доступно, в фиатном эквиваленте.Комиссия оплачивается отправителем в SOL. Если на балансе недостаточно SOL, транзакция не будет подписана и отправлена.
Где это показывается
На экране предпросмотра перевода в Solana отображается блок “Network fee”, то есть комиссия блокчейна, с суммой в SOL и, если известен курс, в фиатном эквиваленте.Комиссии за стейкинг
При участии в TON-стейкинге пользователи сталкиваются с несколькими типами комиссий, которые задаются каждым пулом индивидуально. Все комиссии явно отображаются в интерфейсе стейкинга до выполнения операции.- Комиссия за пополнение — комиссия за отправку средств составляет 0.2 TON.
- Комиссия за вывод — комиссия за вывод средств обычно составляет от 0.2 до 0.4 TON.