Telegram Bot as Ethereum Wallet Разрабатываем тривиальный кошелек к Эфиру через телеграмм бота
Сделаем бота, через которого можно управлять эфир кошельком. У него будет всего три функции:
- Сохранить кошелек (экспорт)
- Посмотреть баланс
- Отправить транзакцию
Генерация кошелка происходит автоматически при начале диалога с ботом /start
- Пользователь начинает диалог командой /start
- На основании Chat Id и User Id формируется закрытый ключ и адрес. Получается, что только этот пользователь и только в этом чате может управлять кошельком. Здесь не очень понятен вопрос безопасности, сформировать приватный ключ на основе статических данных как-то несекьюрно, надо думать, можно взять этропию от пользователя, например, спросить его что-нить
- Сообщает адрес кошелька в чат
Всё гениальное просто, потому один чат, один кошелек. Хочешь новый кошелек, удаляй чат, создавай заново, будет новый
- Пользователь начинает диалог с ботом командой /export
- Бот запрашивает адрес электронной почты
- Бот просит поделиться номером мобильного телефона
- Развилка либо текст, либо голос
Голос:
- Бот просит отправить голосовое сообщение (записать файл с голосом) с секретной фразой
- Бот с помощью https://tech.yandex.ru/speechkit/ конвертирует фразу в текст
Текст:
-
Бот просит прислать пароль в текстовом виде
-
Отправляет фразу по SMS пользователю и просит подтверждения корректности фразы, запрашивая код из SMS
-
Отправляет пользователю на почту зашифрованный файл кошелька
Итого, должно получиться вполне секюрно: зашифрованный файл в почте, пароль в SMS, голос в чатике (с экрана не прочитать). Надо ещё подумать, как прикрутить аккаунт пользователя в Telegram, например, логин или просто ID юзера для секюрности. Может быть давать пользоваться через бота только кошельками, созданными в нём же, хотя зачем так ограничивать... Надо думать.
- Бот показывает баланс
- Бот запрашивает адрес кошелька отправителя
- Бот запрашивает адрес кошелька получателя
- Бот запрашивает сумму в ETH для отправки
- Бот запрашивает дополнительные данные для перевода, описание платежа, если необходимо
- Отправляет тразакцию и даёт ссылку на блокчейн эксполорер