Burn jetton-токена

Сжешь jetton через burn на jetton-wallet: уменьшишь balance и total_supply, вернёшь excesses на response-адрес.

Что делает burn

Burn — сообщение burn#595f07bc на свой jetton-wallet. Wallet уменьшает balance и уведомляет master (burn_notification), master уменьшает total_supply. Токены исчезают; TON с wallet (excesses) уходят на response_destination.


Сжигаем 1 jetton

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

const OP_BURN = 0x595f07bc; // burn#595f07bc

function buildBurn(opts: {
  amount: bigint;
  responseTo: Address;
  queryId?: bigint;
}) {
  return beginCell()
    .storeUint(OP_BURN, 32)
    .storeUint(opts.queryId ?? 0n, 64)
    .storeCoins(opts.amount)
    .storeAddress(opts.responseTo)
    .storeBit(false) // no custom_payload
    .endCell();
}

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

  const master = client.open(
    JettonMaster.create(
      Address.parse("EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs"), // jUSDT mainnet
    ),
  );

  const owner = Address.parse(
    "EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N",
  );
  const jettonWallet = await master.getWalletAddress(owner);

  // decimals=6 → 1.0 = 1_000_000n
  const body = buildBurn({
    amount: 1_000_000n,
    responseTo: owner,
  });

  // Sender / TonConnect:
  return {
    to: jettonWallet,
    value: toNano("0.05"), // газ wallet → master + excesses
    body,
  };
}

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

  • Цель — jetton-wallet владельца, не master.
  • amount не может превышать balance этого wallet.
  • После burn master получает burn_notification#7bdd97de и уменьшает supply.
  • response_destination получает остаток Gram; без него excesses могут «застрять» на контракте.

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

Burn на master → master не хранит баланс пользователя; сообщение бесполезно или упадёт.

Мало Gram в value → не хватает на notification master'у; burn откатывается/bounce.

Сжёг больше, чем balance → exit / rejected transfer-эквивалент «not enough balance». Сначала прочитай баланс.


Что дальше

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