В бетах Telegram для macOS и Android появился перенос коллекционных подарков из профиля во встроенный кошелёк и обратно. Подарок, отправленный в кошелёк, становится обычным NFT в блокчейне TON, а из кошелька его можно вернуть в свой профиль или положить в чужой. Пользователям функция пока недоступна: код есть в клиентах, но на сервере она ещё не включена.
Что появилось в бетах
16 октября в сборке Telegram для macOS 13.0.283324 появились строки интерфейса для переноса:
- «Move to My Wallet» и «Move to My Gifts»;
- «Move this gift to your blockchain wallet?» и «Move this gift to your profile?»;
- «Gift moved to your wallet.» и «Gift moved to your profile.»;
- «You can move it back onchain again at any time.»;
- «Hide from Profile» и «Choose Recipient».
Через день, 17 октября, вышла бета Telegram для Android 13.1.0. В её схеме API три новых метода, которых в сборке 13.0.3 ещё не было: withdrawStarGift, depositStarGift и displayStarGift.
Как устроен перенос
Из профиля в кошелёк — метод withdrawStarGift. Запрос подтверждается паролем двухэтапной аутентификации, как вывод звёзд и прочие операции с деньгами в Telegram. У метода есть флаг keep_on_profile: подарок может уехать в кошелёк и при этом остаться на виду в профиле. Строка «Hide from Profile» — обратный выбор.
Из кошелька в профиль — метод depositStarGift. В нём указываются подарок, получатель и флаг hide_sender, скрывающий отправителя. Сервер в ответ не переносит подарок сам, а отдаёт три поля: адрес NFT, полезную нагрузку транзакции и сумму. Кошелёк отправляет NFT по этому адресу транзакцией в TON, и только после неё подарок появляется в профиле. Поле получателя и строка «Choose Recipient» значат, что подарок из кошелька можно положить не только к себе, но и в профиль другого человека — со скрытым отправителем или без.
Показ без переноса — метод displayStarGift. Он выставляет в профиль подарок, который остаётся в кошельке.
Чем это отличается от вывода через Fragment
Вывести подарок в блокчейн можно было и раньше, но только во внешний кошелёк TON и через Fragment: Telegram выдавал ссылку на вывод (метод getStarGiftWithdrawalUrl, он есть и в прежних сборках), а дальше вывод проходил на сайте Fragment. Новый путь короче: подарок уходит во встроенный кошелёк прямо из профиля, без перехода на сайт, а возвращается оттуда обычной транзакцией из того же кошелька.




