В открытом коде Telegram Web K — веб-версии по адресу web.telegram.org/k — 30 октября появился кошелёк Gram целиком: баланс, история, отправка и приём, секретная фраза, коллекционные предметы, переводы в чатах и TON Connect. 2 ноября его спрятали: константа WALLET_RELEASED стоит в false, и пока её не переключат руками, ни один пункт меню, ссылка или кнопка в кошелёк не ведут. На сайте web.telegram.org/k кошелька ещё нет — там сборка 30 октября, собранная за четыре с половиной часа до коммита кошелька. Во второй веб-версии, Web A, кошелёк уже в рабочей сборке: его показывает серверный флаг wallet_available, тот же, что у приложений для iOS и Android. Касается это тех, кто пользуется Telegram из браузера.
Что лежит в коде Web K
Кошелёк влит одним коммитом 30 октября в 19:18 UTC: 284 файла, 48 483 строки добавлено, 375 удалено. Описание коммита называет образцом клиенты для iOS и Android. Что в нём есть:
| Раздел | Что умеет |
|---|---|
| Баланс | сумма в Gram и в выбранной валюте |
| История | страницы операций кешируются |
| Отправка | контакту, по юзернейму, на адрес или домен TON DNS, с комментарием |
| Приём | адрес, QR-код, пополнение |
| Секретная фраза | резервная копия, экспорт, проверка слов |
| Резервная копия ключа | включение и выключение; при выключении можно сменить секретную фразу |
| Старый кошелёк | второй кошелёк на устройстве лежит рядом с основным |
| Коллекционные предметы | просмотр и отправка |
| Переводы в чатах | отдельная карточка, пока перевод идёт — «отправляется» |
| TON Connect | подключение приложений и ответы на их запросы; запросы ждут, пока кошелёк закрыт |
Транзакции и ключи считает не сам клиент, а движок wallet-engine — кроссплатформенный кошелёк TON на Rust от разработчика TON Core. В npm его нет: веб-пакет берётся архивом из релиза на GitHub, сейчас 0.0.7 от 30 сентября, и отдельный скрипт сверяет архив с опубликованной контрольной суммой. В тех же релизах лежат сборки движка для Android, Swift, macOS, Linux и Windows.
Между слиянием и скрытием кошелёк правили трижды, и все три правки — о меню адреса TON: два коммита стороннего автора, влитые запросом #750, и один ведущего разработчика Web K. Теперь при нажатии на адрес клиент ищет владельца в уже загруженных профилях и в карточках кошелька автора сообщения, собеседника и своего аккаунта, затем спрашивает сервер, а остальные профили догружает, только если сервер ответил, что кошелёк ни к кому не привязан. Владелец показывается строкой с аватаркой в размерах клиента для Android.
Что есть в Web A
Во второй веб-версии, telegram-tt, кошелёк Gram появился раньше — коммитом 12 октября «Wallet: Introduce Gram Wallet» на 26 255 строк. 26 октября к нему добавили новый экран отправки с эффектами на WebGPU, а отдельными коммитами — проверку ссылок TON Connect и операции, где второй стороной выступает канал или подарок Telegram.
Сборка на web.telegram.org/a — версия 12.0.48 от 26 октября — кошелёк содержит: он грузится отдельным модулем, а показывает его клиент, если сервер прислал аккаунту в конфиге wallet_available. Там же конфиг задаёт минимальную сумму перевода (wallet_transfer_min_nanos) и число переводов в сутки без платы за газ (wallet_gasless_daily_transfers).
Что делать
- Нужен кошелёк в браузере сейчас — попробуйте web.telegram.org/a: там он может быть уже доступен. Показ решает тот же флаг сервера, что и в приложениях на телефоне, поэтому кошелька в браузере не будет у аккаунта, которому сервер его не включил.
- Пользуетесь Web K — кошелька там пока не будет ни в меню, ни в настройках, ни в поиске по настройкам. Ссылка
t.me/sendgramsдо релиза открывается как обычная ссылка на юзернейм, а адрес TON в сообщении — простым текстом. - Пришёл перевод в чате Web K — карточка перевода видна, но до релиза не открывается: детали и зашифрованный комментарий смотрите в приложении на телефоне.
- Перед выходом из аккаунта в браузере проверьте, записана ли секретная фраза или включена ли резервная копия. Ключи кошелька веб-версия хранит на устройстве, и в коде Web K экран выхода предупреждает об этом отдельно (раздел ниже). Как найти и сохранить фразу — в справке.
Как кошелёк спрятан до релиза
Скрытие заняло два коммита 2 ноября. Сначала в 14:31 UTC убрали пункт «Send Money» из меню чата, меню перевода Gram и меню адреса TON, остальное ещё зависело от сервера. В 15:23 UTC второй коммит закрыл всё: в файле lib/wallet/release.ts появилась константа WALLET_RELEASED = false. По её описанию, это не настройка: её переключат в коде в день релиза.
Пока она false, закрыты пункт «Wallet» в главном меню и в настройках (клиент не запрашивает даже баланс для этой строки), результат поиска по настройкам, пункт в меню вложений, все кнопки «Send Money», окно кошелька, ссылки кошелька и TON Connect, меню адреса TON и запросы TON Connect. Открытым кошелёк остаётся только в песочнице всплывающих окон — она есть в отладочных и предварительных сборках и работает на подставных данных, без запросов к серверу.
После релиза решать будет сервер, но с другим умолчанием, чем в Web A: Web K спрячет кошелёк, только если флаг wallet_available пришёл со значением «нет», а Web A покажет его, только если флаг пришёл со значением «да».
Ключи в браузере
Ключ кошелька Telegram можно держать в зашифрованной резервной копии. Включение и выключение копии в Web K по комментарию в коде повторяет клиент для iOS, а строки описывают её так: копия делится на три части и хранится в дата-центрах на трёх континентах, а собирается только на устройствах владельца. Если копию выключить, восстановить кошелёк можно будет только секретной фразой. При выключении клиент предлагает заодно сменить фразу: адрес и баланс остаются прежними, смена записывается в сеть и стоит комиссию, а с нулевым балансом её не сделать.
Отсюда предупреждения при выходе из аккаунта. Их у Web K четыре: ключи кошелька есть только на этом устройстве и копии у Telegram нет; на устройстве лежат ключи ещё одного, старого кошелька; смена ключа не подтверждена, и новый ключ есть только здесь; и общий случай — если ключи есть, выход их уничтожит. В первых трёх случаях вернуть кошелёк можно только секретной фразой, в последнем — резервной копией Telegram или фразой.
Как проверено
- Код Web K: коммит кошелька (30.10, 19:18 UTC, +48 483/−375, 284 файла), скрытие Send Money и скрытие кошелька (02.11), файл с константой, строки кошелька в
src/lang.ts, зависимость@ton/wallet-engineвpackage.jsonи скрипт её обновления. - Сайт web.telegram.org/k: страница отдана с
Last-Modified30 октября 14:47 UTC — это коммит сборки 14:46 UTC; анимаций кошелька из коммита 30 октября на сайте нет, их адреса отвечают переадресацией. - Код и сайт Web A: коммит кошелька (12.10), экран отправки (26.10); в рабочей сборке 12.0.48 (
Last-Modified26 октября 18:09 UTC) — модуль кошелька,openWalletModalи поля конфигаwallet_available,wallet_transfer_min_nanos,wallet_gasless_daily_transfers. - Движок: релизы wallet-engine — 0.0.1 от 19 августа до 0.0.7 от 30 сентября.




