Skip to main content
В Tonhub стейкинг TON реализован через пулы TON Whales на tonwhales.com: пользователи делегируют TON в выбранный пул и получают долю наград за валидацию сети. Ниже описано, что означает стейкинг в контексте приложения и как он работает технически.

Что такое стейкинг в контексте Tonhub

Стейкинг — это делегирование монет TON в пул, который участвует в выборах валидаторов и получает награды за работу сети. Пользователь не запускает ноду сам: он отправляет TON в смарт-контракт пула и становится номинатором этого пула. Пулы, доступные в Tonhub, принадлежат Ton Whales.
В приложении пользователь может:
  • Пополнить стейк (deposit): отправить TON на адрес пула; сумма будет зачислена в аккаунт участника пула и начнет участвовать в следующем стейкинговом цикле. Инструкция по пополнению.
  • Запросить вывод (withdraw): инициировать полный или частичный вывод средств из пула. Инструкция по выводу.
  • Просматривать баланс: текущий стейк balance, средства в ожидании пополнения pendingDeposit, средства в ожидании вывода pendingWithdraw и сумму, уже готовую к получению withdraw.
  • Рассчитывать доходность: использовать встроенный калькулятор доходности в кошельке.
Все операции выполняются в сети TON, а комиссии пула, включая комиссии за вывод и “receipt”, оплачиваются в TON. Подробнее о комиссиях см. в разделе Fees, посвященном TON-стейкингу.

Как реализован стейкинг: пулы и данные

Доступные пулы

Список пулов, которые отображаются в Tonhub и с которыми он работает, определен в приложении через KnownPools и связан с адресами контрактов в mainnet и testnet. Примеры:
  • Nominators 1 / Nominators 2 — пулы номинаторов TON Whales, открытые для всех.
  • Team 1 / Team 2 — командные пулы с возможными ограничениями по доступу.
  • Club 1 / Club 2 — клубные пулы с ограниченным доступом; для вступления используется ссылка tonwhales.com/club.
  • Tonkeeper 1 / Tonkeeper 2 — партнерские пулы Tonkeeper.
  • Whales Liquid — ликвидный стейкинг через обертку wsTON.
  • USDe Liquid — стейкинг USDe (Ethena), который включается конфигом приложения features.ethena.

Параметры пула

Параметры каждого пула запрашиваются напрямую из смарт-контракта TON через метод get_params. Ответ включает:
  • enabled — включен ли прием депозитов;
  • minStake — минимальная сумма депозита;
  • depositFee — комиссия за пополнение в nano-TON;
  • withdrawFee — комиссия за вывод;
  • receiptPrice — стоимость “receipt”, то есть учетной единицы для операций;
  • poolFee — комиссия пула, то есть доля наград в процентах или базовых единицах, в зависимости от контракта.
Эти значения используются для показа комиссий пользователю, а также для проверки минимальной суммы и достаточности баланса при выводе, например для резервирования withdrawFee и receiptPrice.

Состояние участника

Для каждого пула и адреса кошелька приложение запрашивает состояние участника через вызов get_member, куда передается адрес номинатора. Возвращаются:
  • balance — текущий застейканный баланс;
  • pendingDeposit — сумма, ожидающая зачисления в стейк;
  • pendingWithdraw — сумма, ожидающая вывода и заблокированная до конца цикла;
  • withdraw — сумма, готовая к выводу на кошелек после разблокировки.
Данные обновляются при открытии экрана стейкинга и при переключении между пулами. Для обычных пулов, то есть не ликвидных, запросы идут непосредственно в TON через TonClient4, getLastBlock и runMethod; для ликвидного пула и USDe используются отдельные API и контракты.

Статус сети и выборы

Чтобы показывать текущие стейкинговые циклы и сроки разблокировки, приложение использует сетевой staking status: время выборов, минимальный и максимальный стейк, список валидаторов и другие данные. Эти данные запрашиваются из staking indexer или, если он недоступен, через резервный fetchStakingStatusV4 с использованием данных TON, включая конфигурацию выборов и electors. Благодаря этому приложение знает, когда заканчивается текущий цикл, например proxyStakeUntil, и когда пользователь сможет вывести средства.

Операции: пополнение и вывод

Пополнение (deposit / top up)

Пользователь вводит сумму в TON и подтверждает перевод. Приложение создает обычную исходящую транзакцию в TON: получатель — адрес пула, сумма — введенное значение, без отдельного вызова контракта, поскольку пул принимает входящий перевод. После включения транзакции в блок пул зачисляет средства на аккаунт участника; они отображаются как balance и или pendingDeposit в зависимости от фазы цикла. Инструкция по пополнению.

Вывод (withdraw)

Пользователь инициирует вывод: приложение отправляет сообщение на вывод, либо эквивалентный вызов по протоколу конкретного пула, с указанной суммой. Пулы TON Whales взимают withdrawFee и receiptPrice, поэтому пользователь должен иметь достаточный баланс с учетом этих комиссий. После обработки запроса сумма переходит в состояние “ожидает вывода”, то есть pendingWithdraw, а после окончания блокировки — в withdraw, что означает готовность к получению. Затем пользователь выполняет финальное действие “claim”, и TON отправляются на его кошелек. Инструкция по выводу.
Интерфейс показывает комиссию пула, то есть withdraw fee + receipt, перед выводом, чтобы пользователь видел итоговую сумму к получению.

Ликвидный стейкинг (Whales Liquid, wsTON)

Ликвидный стейкинг в Tonhub представлен продуктом Whales Liquid: пользователь делегирует TON в контракт и получает завернутый токен wsTON, который можно хранить, переводить или обменивать, пока базовый TON продолжает участвовать в стейкинге.

Как это работает

  • У контракта ликвидного стейкинга есть фиксированный адрес в mainnet и testnet, например EQB0SoxuGDx5qjVt0P_bPICFeWdFLBmVopHhjgfs0q-wsTON для mainnet. Это не обычный пул из get_member: данные о балансе и курсе запрашиваются через Tonhub API по адресу staking/mainnet/pool/liquid/info, либо через testnet-эквивалент. Ответ включает:
  • rateDeposit / rateWithdraw — курсы конвертации TON и wsTON.
  • extras — minStake, depositFee, withdrawFee, receiptPrice, poolFee, roundEnd, proxyStakeUntil и другие параметры.
  • balances — объемы протокола, например supply, total balance, pending withdraw и так далее.
  • Deposit: пользователь отправляет TON в контракт с телом liquid deposit, то есть op из LiquidStakingContract: storeLiquidDeposit, а в ответ получает токены wsTON по актуальному rateDeposit.
  • Withdrawal: пользователь отправляет сообщение liquid withdraw, указывая объем wsTON, через storeLiquidWithdraw; после обработки и разблокировки он получает TON обратно по rateWithdraw. Комиссии withdrawFee и receiptPrice учитываются в интерфейсе.
TON-эквивалент баланса показывается на основе количества wsTON и rateWithdraw. APY и комиссия пула poolFee отображаются в карточке Whales Liquid, когда данные доступны из API и useStakingApy.

USDe Liquid (Ethena)

Когда включена функция Ethena, то есть в конфиге приложения активирован features.ethena, в списке пулов появляется USDe Liquid — стейкинг стейблкоина USDe. Пул связан с контрактом Ethena, не принадлежащим Ton Whales, например tsMinter и другими связанными контрактами. Механика в приложении похожа на ликвидный стейкинг: пользователь взаимодействует с контрактом через специальные сообщения, а данные для отображения, такие как баланс и комиссии, подтягиваются из API и контракта в зависимости от реализации. Пул добавлен в кошелек по соглашению с Ethena.

Ограничения и особенности стейкинга в Tonhub

  • Только TON: стейкинг в Tonhub работает только в сети TON, как в mainnet, так и в testnet. Solana в стейкинге не участвует.
  • Пулы Whales: приложение рассчитано на Whales и партнерские пулы, такие как Nominators, Team, Club, Tonkeeper и Liquid. Добавление произвольных пулов по адресу без поддержки того же протокола на уровне кода не предусмотрено.
  • Ограниченные пулы, например Club и Team: для входа в закрытые пулы нужно соответствовать определенным условиям.
  • Комиссии: все комиссии пула, включая deposit, withdraw, receipt и pool fee, задаются контрактом и или API, а приложение только отображает их и проверяет достаточность баланса.

Ошибки и пограничные ситуации

Сумма меньше minStake

Для депозитов пул требует минимальную сумму стейка: minStake плюс комиссии депозита, то есть depositFee и receiptPrice. Если пользователь ввел сумму ниже этого порога, приложение показывает предупреждение под полем ввода с сообщением о минимальной сумме в TON и необходимости увеличить ввод.
Кнопка подтверждения может оставаться доступной, но пул не примет депозит ниже минимума: транзакция может завершиться ошибкой или просто не будет зачислена.

Недостаточно TON для комиссий withdrawFee / receiptPrice

Для вывода пул взимает комиссию. Если на балансе кошелька или в аккаунте пула недостаточно TON для оплаты этих комиссий, операция вывода не пройдет, либо пользователь увидит сообщение об ошибке или недостаточном балансе.
Интерфейс показывает строку с размером комиссии перед выводом, чтобы пользователь мог оценить сумму к получению.
Рекомендация: всегда держать небольшой резерв TON в кошельке и учитывать, что повторные действия по выводу, например в два этапа, могут потребовать двойную оплату комиссий — приложение резервирует эти суммы из доступного баланса, когда используется команда “Enter all” для депозитов.

Стейк “исчез” с баланса и перешел в pendingWithdraw

После запроса на вывод сумма уходит из текущего стейка balance и переходит в pendingWithdraw. Это нормальное поведение: средства блокируются до окончания текущего стейкингового цикла, например до proxyStakeUntil. Пользователь видит их в разделе “Pending withdrawal” или аналогичном экране.
Что делать: дождаться окончания цикла; после этого сумма появится в withdraw, то есть в статусе готовности к получению, и можно будет нажать “Claim”, чтобы перевести TON на кошелек. Дополнительных действий не требуется.

Недоступен API или индексер

Данные о статусе выборов, циклах и курсах для ликвидного стейкинга приходят из staking indexer и Tonhub API, например staking/.../pool/liquid/info. Если API или индексер временно недоступен, приложение может приблизительно показывать кэшированные данные или информацию из последнего успешного ответа контракта TON, например get_params и get_member.
Некоторые поля могут быть временно недоступны или устареть: даты окончания цикла, APY, курсы ликвидного стейкинга. В таких случаях рекомендуется повторить попытку позже или обновить экран; критические операции, такие как пополнение и вывод, могут быть заблокированы или сопровождаться предупреждениями, если данных недостаточно.