Ошибка: Jetton transfer — Not enough jetton balance Причина и решение ошибки «Not enough jetton balance» при переводе jetton на TON.
Jetton transfer: «Not enough jetton balance»
Jetton-wallet отклонил transfer: запрошенная сумма токенов больше balance этого wallet-контракта (не путать с балансом TON на обычном кошельке).
Причина
на jetton-wallet реально меньше jetton, чем в amount;
смотришь баланс master'а или чужого wallet — у каждого владельца свой jetton-wallet адрес;
decimals: передал 1 вместо 1 * 10^decimals;
предыдущий transfer ещё не подтвердился, UI показывает stale balance.
Решение
typescript
Копировать// @ton/core ^0.59, @ton/ton ^15
import { Address, beginCell, toNano, internal } from "@ton/core" ;
const jettonWallet = Address. parse ( "EQB..." ); // именно jetton-wallet отправителя
const destOwner = Address. parse ( "EQC..." );
const decimals = 9 n ;
const human = 1 n ; // 1 jetton
const amount = human * 10 n ** decimals;
// 1) Проверь on-chain balance get-методом jetton-wallet (get_wallet_data)
// 2) Потом собирай transfer
const transferBody = beginCell ()
. storeUint ( 0xf8a7ea5 , 32 ) // op::transfer
. storeUint ( 0 , 64 ) // query_id
. storeCoins (amount)
. storeAddress (destOwner)
. storeAddress (walletAddress) // response_destination
. storeBit ( false ) // no custom payload
. storeCoins ( toNano ( "0.01" )) // forward_ton_amount
. storeBit ( false ) // no forward_payload
. endCell ();
const message = internal ({
to: jettonWallet,
value: toNano ( "0.05" ), // TON на газ, не сумма jetton
body: transferBody,
});
tact (fallback highlight)
Копировать// Tact — типичная проверка в jetton-wallet
receive (msg : JettonTransfer ) {
require ( self . balance >= msg . amount, "Not enough jetton balance" );
self . balance = self . balance - msg . amount;
// send internal transfer notification...
}
Как избежать в будущем
Перед transfer читай balance с своего jetton-wallet и учитывай decimals. В UI показывай on-chain значение, а не кэш индексатора старше пары блоков.
НазадОшибка: FunC — cannot compute при чтении cell Далее Ошибка: NFT — Not owner при попытке трансфера Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация
На этой странице