Стейкинг Gram: как это работает

Поймёшь модель номинаторов сети TON и отправишь депозит/вывод Gram в nominator pool через текстовые комментарии d и w.

Стейкинг Gram

Стейкинг в сети TON — делегирование Gram валидатору через смарт-контракт пула. Ты не запускаешь ноду: контракт nominator pool собирает ставки номинаторов, валидатор стейкает сумму на выборы, награды делятся по доле за вычетом комиссии валидатора.

Минимальный стейк номинатора задаётся параметром конкретного пула — проверяй его контракт или UI оператора. Вывод — только полный.


Депозит и вывод в nominator pool

Взаимодействие — обычное сообщение с текстовым комментарием на адрес пула (basechain-кошелёк 0:...).

typescript
// @ton/ton@16.3.0  |  @ton/core@0.63.1  |  @tonconnect/ui-react@2.0.9
import { Address, beginCell, toNano } from "@ton/core";

/**
 * Адрес пула бери с tonnominators.com / документации оператора.
 * Ниже — формат вызова; подставь проверенный mainnet-адрес конкретного пула.
 */
function commentPayload(text: string) {
  return beginCell().storeUint(0, 32).storeStringTail(text).endCell();
}

/** Депозит: комментарий "d", сумма ≥ min_nominator_stake + 1 GRAM */
export function buildNominatorDeposit(poolAddress: string, stakeTon: number) {
  // 1 GRAM из суммы уходит как fee обработки депозита
  const amount = toNano(stakeTon.toFixed(9));

  return {
    to: Address.parse(poolAddress),
    value: amount,
    body: commentPayload("d"),
  };
}

/** Вывод всего стейка + наград: комментарий "w", ~1 GRAM на газ */
export function buildNominatorWithdraw(poolAddress: string) {
  return {
    to: Address.parse(poolAddress),
    value: toNano("1"),
    body: commentPayload("w"),
  };
}

// Отправка через TonConnect
export async function sendNominatorMessage(
  sendTransaction: (tx: {
    validUntil: number;
    messages: { address: string; amount: string; payload: string }[];
  }) => Promise<void>,
  msg: { to: Address; value: bigint; body: ReturnType<typeof commentPayload> },
) {
  await sendTransaction({
    validUntil: Math.floor(Date.now() / 1000) + 300,
    messages: [
      {
        address: msg.to.toString(),
        amount: msg.value.toString(),
        payload: msg.body.toBoc().toString("base64"),
      },
    ],
  });
}

Пример вызова:

typescript
const deposit = buildNominatorDeposit(
  "EQD...pool...", // mainnet-адрес выбранного пула
  10_001, // ≥ min_nominator_stake + 1
);
await sendNominatorMessage(tonConnectUI.sendTransaction.bind(tonConnectUI), deposit);

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

Nominator pool — контракт в masterchain. Номинаторы шлют Gram из basechain. Пул участвует в раундах валидации через elector.

Комментарий "d" — deposit. Сумма должна быть ≥ min_nominator_stake + 1 GRAM; 1 GRAM списывается как комиссия обработки. Если пул сейчас в валидации, депозит может встать в pending до конца раунда.

Комментарий "w" — withdraw всего баланса номинатора (стейк + накопленные награды). Частичного вывода в стандартном nominator pool нет: чтобы «забрать награду», выводишь всё и при необходимости депозитишь заново.

Награды — после раунда пул забирает стейк из elector; прирост минус validator_reward_share делится пропорционально долям номинаторов. Штрафы валидатора сначала бьют по его доле, при нехватке — пропорционально по номинаторам.

Single nominator pool — вариант на одного номинатора (часто кастодиальные/крупные стейки). Интерфейс другой; не путай с multi-nominator pool.

Liquid staking

Протоколы liquid staking (tsTON и аналоги) выпускают jetton взамен застейканного Gram. Механика другая: депозит в контракт протокола, не "d"/"w" nominator pool. Интегрируй по SDK/ABI конкретного протокола; модель рисков (смарт-контракт + валидаторы) тоже отдельная.

Частые ошибки

Шлёшь депозит меньше min + 1 GRAM → пул отклоняет или не учитывает номинатора. Читай параметры пула on-chain / в UI оператора до отправки.

Ждёшь частичный вывод → его нет. "w" забирает всё; спланируй UX и бухгалтерию под полный unstake.

Адрес пула из непроверенного источника → средства уйдут на чужой контракт. Сверяй адрес с официальным списком оператора и explorer (код = nominator pool).


Что дальше

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация