Комиссии кошелька: forward fee, storage fee

Разберёшь, из чего складывается списание при переводе с кошелька: compute, forward fee исходящих сообщений и storage fee.

Комиссия кошелька — не одна цифра

Когда кошелёк отправляет перевод, с баланса уходит не только value получателю. Платятся как минимум:

  • Compute fee — исполнение кода кошелька (проверка подписи, seqno, формирование outs)
  • Forward fee — доставка каждого исходящего internal (размер в битах/ячейках)
  • Storage fee — хранение code/data кошелька во времени (начисляется периодами)

Точные тарифы задаёт конфиг сети и могут меняться. Ориентир для пользователя: «перевод 1 TON» ≈ 1 TON + небольшая комиссия цепочки сообщений.


Оценка на testnet: баланс до и после

typescript
// @ton/ton ^15.1.0, @ton/core ^0.59.0
import { TonClient, Address, fromNano, toNano } from "@ton/ton";

const client = new TonClient({
  endpoint: "https://testnet.toncenter.com/api/v2/jsonRPC",
});

const wallet = Address.parse(
  "0QD-SuoCHsCL2pIZfE8IAKsjc0aDpDUQAoo-ALHl2mje04A-", // свой testnet-кошелёк
);

const before = await client.getBalance(wallet);
// ... здесь sendTransfer на toNano("0.05") с комментарием ...
const after = await client.getBalance(wallet);

const sent = toNano("0.05");
const spentTotal = before - after;
const feesApprox = spentTotal - sent;

console.log("value", fromNano(sent));
console.log("fees ≈", fromNano(feesApprox));

Точный разбор фаз — в трассе транзакции (Tonviewer / sandbox transaction fees): отдельно storage, gas, action/fwd.

КомпонентОт чего растёт
Forward feeРазмер body, число outs в одной tx кошелька
ComputeСложность проверки (обычный transfer — дёшево)
StorageРазмер data/code, время простоя с балансом

SendMode.PAY_GAS_SEPARATELY влияет, откуда списывается газ относительно value получателя — закладывай запас на комиссию на балансе отправителя.

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

  1. External приходит на кошелёк → compute проверяет подпись и seqno.
  2. Кошелёк создаёт 1..N internal outs → за каждый считается forward fee.
  3. Получатель (если контракт) тратит свой compute из приложенного value.
  4. Storage fee кошелька накапливается, пока аккаунт хранит состояние; «пустой» unused аккаунт всё равно может иметь ненулевую стоимость хранения со временем.

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

Кладешь ровно toNano("0.05") на кошелёк и пытаешься отправить 0.05 → не хватит на fees; перевод не пройдёт. Держи запас (часто ≥ 0.05–0.1 TON сверх суммы).

Пихаешь огромный payload в комментарий/cell → растёт forward fee и риск лимитов; для больших данных — ссылка/хеш off-chain.

Путаешь комиссию кошелька и газ получателя → пользователь платит за свою tx; контракту-получателю нужен достаточный value на его compute.


Что дальше

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