Ошибка: NFT — Not owner при попытке трансфера Причина и решение ошибки «Not owner» при transfer NFT-элемента на TON.
NFT: «Not owner» при попытке трансфера
NFT-item отклонил transfer: sender() не совпадает с текущим owner этого item-контракта.
Причина
transfer шлёт не владелец, а collection / сторонний кошелёк;
NFT уже переведён, UI показывает старого owner;
путаешь адрес collection и адрес item — сообщение ушло не в тот контракт;
используешь чужой testnet item на mainnet (или наоборот).
Решение
typescript
Копировать// @ton/core ^0.59
import { Address, beginCell, toNano, internal } from "@ton/core" ;
const nftItem = Address. parse ( "EQ..." ); // адрес конкретного NFT item
const newOwner = Address. parse ( "EQ..." );
const responseTo = walletAddress; // куда вернуть лишний TON
// Убедись on-chain: get_nft_data → owner_address == твой кошелёк
const transfer = beginCell ()
. storeUint ( 0x5fcc3d14 , 32 ) // op::transfer
. storeUint ( 0 , 64 ) // query_id
. storeAddress (newOwner)
. storeAddress (responseTo)
. storeBit ( false ) // no custom payload
. storeCoins ( toNano ( "0.01" )) // forward_amount
. storeBit ( false )
. endCell ();
const message = internal ({
to: nftItem,
value: toNano ( "0.05" ),
body: transfer,
});
tact (fallback highlight)
Копировать// Tact 1.6+ — типичная проверка в NFT item
receive (msg : Transfer ) {
require ( sender () == self . owner, "Not owner" );
self . owner = msg . newOwner;
// notify new owner / excesses...
}
Как избежать в будущем
Перед transfer читай get_nft_data и сверяй owner. Подписывай tx тем же кошельком. В тестах сначала mint/transfer на treasury, затем проверяй owner get-методом.
НазадОшибка: Jetton transfer — Not enough jetton balance Далее Ошибка: TonAPI — rate limit (429) Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация
На этой странице