Многие заметили, что @wallet убрали из меню настроек в Telegram, а сам Wallet переименовали в Walt. И этому есть объяснение: прямо сейчас есть новый пропоузал в мейннете, который обновляет ячейку конфига -123 с кодом нового вида кошелька.
Telegram Wallet решает одну из самых неприятных проблем обычных TON-кошельков — миграцию при обновлении,
В классическом TON, кошелёк — это смарт-контракт, код которого навсегда привязан к адресу. V3, V4, V5 — это разные версии контрактов. Если нужно перейти на новую логику, фактически приходится создавать новый кошелёк и переносить туда активы.
У Telegram Wallet архитектура интереснее.
В TON появился специальный
config[-123], куда валидаторы записали полный код TgWallet. А на самом адресе пользователя находится небольшой неизменяемый контракт-трамплин 🙃Когда кошелёк получает сообщение, трамплин достаёт актуальный код из
config[-123] и передаёт ему управление.💪 Получается довольно мощная конструкция
→ адрес кошелька не меняется при обновлении
→ не нужно переносить активы на новый контракт
→ не нужно создавать новый кошелёк
→ трамплин остаётся неизменным
→ обновление логики происходит через консенсус валидаторов
То есть Telegram Wallet по сути отделяет адрес и состояние пользователя от логики кошелька.
Самое интересное здесь даже не Telegram, а архитектурный подход: кошелёк становится обновляемой частью инфраструктуры TON, а не одноразовым контрактом, который нужно заменять при каждом серьёзном изменении.
Исходники TgWallet и
WalletTrampoline.fif открыты:https://github.com/ton-blockchain/tg-wallet-contract
@dnevnik_ton
