В бетах 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. Новый путь короче: подарок уходит во встроенный кошелёк прямо из профиля, без перехода на сайт, а возвращается оттуда обычной транзакцией из того же кошелька.