Как это произошло?
При минтинге NFT на её баланс нужно положить небольшое количество TON — обычно около 0.05 TON. Из этой суммы часть уходит на оплату газа. Точную сумму, которая будет потрачена на газ, рассчитать сложно, поэтому обычно отправляют чуть больше, чем нужно, а контракт возвращает неиспользованный остаток.
Однако в эталонной реализации NFT-коллекции от Ton Foundation этот механизм возврата не был реализован. В результате при минтинге NFT часть неиспользованных TON осталась на балансе коллекций.
Я проанализировал блокчейн TON и нашёл 196 NFT-коллекций с балансом более 10 TON. Вот некоторые из них с самыми большими остатками:
• X Empire Pre-Market — 2,581 TON
• W-Coin Pre-Market — 1,243 TON
• Age of Farm — 177 TON
Полный список коллекций собран в отдельном файле — там указаны названия, баланс в TON и адреса владельцев.
Как вернуть TON?
Для этого нужно быть владельцем коллекции и владеть хотя бы одной NFT из этой коллекции. Процесс возврата состоит из двух шагов:
1. Отправка запроса на минтинг нового итема с указанием индекса уже существующей NFT. Так как такая NFT уже есть, минтинг не произойдёт. В запросе также указывается количество TON, которое нужно перевести с баланса коллекции на баланс NFT-итема. Чтобы NFT-итем не вернул ошибку, передаётся пустая ячейка данных. Таким образом, TONы переносятся с баланса коллекции на баланс NFT.
2. Передача NFT самому себе. В стандартных контрактах есть механизм, который возвращает излишки TON обратно владельцу NFT во время трансфера.
Таким образом, TON сначала передаётся от коллекции к NFT, а затем от NFT — на ваш кошелёк. Чтобы упростить этот процесс, я сделал инструмент, который автоматически формирует все необходимые сообщения. Также я записал видео, где наглядно показал, как всё работает.
Если у вас не NFT, а SBT, схема остаётся такой же, но вместо передачи токена самому себе нужно отправить ему специальный op-код
op::take_excess. Отправить его можно через этот инструмент.Ставьте лайк, подписывайтесь на канал — буду публиковать ещё больше полезных вещей про TON-блокчейн