А вас же тоже бесят мнемоники?
Мне они всегда не нравились, цифровые хранилища для них
ненадежны, физические и потерять можно, а кроме селф-кастоди я ни во что не верю. В эти новогодние праздники я решил с этим разобраться.
В блокчейнах с
EOA моделью у пользователей особо нет выбора - кошельки и логика их подписей заданы внешне, на уровне протокола, и у разработчиков нет возможности изменить их ончейн логику.
Однако в Тоне кошельки - смарт контракты, и это означает что мы можем контролировать их поведение. Исторически мы пошли самым проторенным путем - те же самые bip сидфразы и мнемоники.
Я считаю, что можно лучше и интереснее, поэтому представляю вам новый тип кошельков на Тоне -
Telegram Wallet.
В одном из недавних
апи патчей Телеграм без анонсов добавили новый вид проверки валидности данных в Тма - через публичную криптографию, Ed25519 подписи, которые как раз нативно поддержаны в TVM.
Я написал смарт контракт для кошелька, который работает на Телеграм подписях вместо подписей от мнемоники юзера, таким образом создавая новую секьюрити модель:
⁃ Кошелек без мнемоники, для подтверждения транзанкции нужно зайти в Телеграм и подписать через Тма
⁃ Сохранен весь функционал V5 -
gasless, плагины, 255 сообщений за транзу
⁃ Без ущерба для безопасности: работает replay protection с секно, эксипрейшн с valid_until
⁃ Контракт шардирован по tg_user_id и tma_id, тг подписи валидны только для контракта этого юзера
Главное отличие
Telegram Wallet от торговых ботов или Тма кошельков бирж (которые тоже работают без мнемоник) в том, что они просто хранят вашу ту же самую ‘
green bread satoshi durov …’ сидку на бэке, автоматически подписывая транзы за вас. Тут же - идейно другой механизм работы, в котором этих ненавистных 24 слов просто нет, подписи работают по-другому, через тг.
Минусы такого подхода:
⁃ Завязка на Телеграм и Тма (вдруг свой приватный ключ потеряют или приложение забанят)
⁃ Завязка на свой Телеграм аккаунт (тоже могут забанить или просто утопить телефон с симкой)
Плюсы:
⁃ Не нужно сохранять мнемонику
⁃ Можно делать нативные кошельки под Тма
⁃ Весело
Вдобавок к контракту я
написал интеграцию
Telegram Wallet в протокол Ton Connect, и даже сделал демо фронтенд для такого нового типа кошельков - можно подключиться к любому даппу и через привычный UI делать декс свапы и всё остальное.
Код контракта -
https://github.com/Kaladin13/telegram-wallet, пример задеплоенного
кошелька
Под конец открытые вопросы на подумать:
⁃ Зачем и для кого Телеграм изначально добавляли такой функционал? (не для меня.)
⁃ Как можно решить описанные мной минусы
⁃ Другое применение ончейн тг подписей