Всем добрый день! Хочу представить вашему вниманию одну достаточно необычную из своих разработок: это кошелек ethereum наподобие MyEtherWallet, но с один большим отзличием: он self-hosted. Сейчас расскажу небольшую предисторию и сразу станет ясно что это значит.
Все в одном HTML-файле!Много лет назад, где-то году в 2011 натолкнулся на CMS состоящую целиком из одного html файла: все изменения вносились в браузере в саму страницу, а затем сохранялись на диск посредством CTRL+S. Никакой магии, все предельно просто. Когда натолкнулся на MEW, то показалось странным обилие файлов и папок, необходимых для его работы. Вспомнив про ту самую CMS, я поместил весь код и стили прямо в страницу, получив на выходе общий файл index.html, содержащий все что нужно для отправки транзакций, создания и добавления кошельков. Даже получилось прикрутить децентрализованные расширения.
В чем удобство такого решения? Можно создать кошелек и сохранить полученный файл с кошельком в iCloud, после этого кошелек можно запустить на iPhone. По надежности такое решение равносильно установке приложения из AppStore, только по сути ничего устанавливать не надо. А расширения позволяют дополнить функционал, добавив, например, работу с токенами ERC20, курс валют или телеграм-бота. Сами расширения хранятся в Swarm (децентрализованное хранилище встроенное в Ethereum), и публикуются через блокчейн. Таким образом весь код автоматически подписывается его автором, при этом снижается возможность для проведения фишинговых атак и атак направленных на подмену исполняемого кода, в частности атака на DNS-протокол с целью перенаправления на вредоносную версию программы.
Приложение в стадии альфа (успешно отправляет транзакции в сеть, запускает расширения) и я пока готовлю код к публикации на гитхаб, но уже сейчас можно попробовать
тестовую версию, работающую в сети Rinkeby. В ближайшее время будет добавлена поддержка загрузки расширений из Swarm и добавлена работа с контрактами.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FYU4EaIc.png&t=665&c=N3X379LhZJyCqg)
За обновлениями следите здесь или в репозитории проекта.