Почему мы сделали Vela
Мы не собирались делать ещё один кошелёк. Всё началось с вопроса, на который у нас так и не получалось ответить нормально:
Где вообще хранить двенадцать слов?
Честный ответ — скриншот
Положите их в «Заметки» — и от беды вас отделяет один украденный телефон. Запишите на бумаге — и вот вы уже думаете про пожар, воду, переезды, соседей по квартире, мусорные пакеты и про то, вспомните ли вы через годы, где было «надёжное место».
Для многих честный ответ — скриншот в галерее. Все знают, что так нельзя. И всё равно так делают, потому что «правильный» ответ слишком тяжело соблюдать в обычной жизни.
Сид-фраза — это секрет, который должен пережить десятилетия обычной жизни и ни разу не оказаться скопированным, сфотографированным, введённым не в то поле или продиктованным по телефону «отзывчивому» человеку. Для очень аккуратного человека это не сложная задача. Для просто человека — сложная.
А потом passkey изменили то, каким может быть кошелёк
Мы каждый день пользовались Base Account, и подпись через Face ID казалась такой естественной, какой сид-фраза не казалась никогда: меньше похоже на обращение с опасным веществом, больше — на обычный интернет.
Но чем дольше мы им пользовались, тем чаще упирались в границы, которые невозможно игнорировать:
- ключ восстановления, сгенерированный в браузере, которому просто приходилось доверять;
- никаких своих сетей;
- никакой возможности развернуть его у себя;
- и тихая проблема, которая оказалась самой большой: исчезнет сервис — исчезнет и кошелёк.
Поэтому мы сделали ту версию, на которую сами готовы полагаться.
Что такое Vela на самом деле
Vela — это кошелёк на passkey, который может быть полностью вашим.
Ваш passkey остаётся там, где устройство и так его защищает: в Связке ключей iCloud, в Менеджере паролей Google или на аппаратном ключе безопасности, который вы держите в руках. Когда вы подписываете транзакцию, Vela просит устройство её подписать; устройство подписывает и возвращает только подпись. Сам ключ Vela не видит никогда.
У большинства кошельков всё ещё есть опасный момент, пусть и короткий: слова на экране, сид-фраза в памяти, ключ восстановления во вкладке браузера. Vela устроена так, чтобы такого момента не было вовсе.
Мы сделали код Vela открытым, чтобы вы могли проверить это сами, и пригодным для самостоятельного развёртывания, чтобы уже созданный кошелёк продолжал работать без серверов нашей компании. Ограничение одно — домен, к которому привязаны ваши passkey; оно и способы его обойти описаны в руководстве по самостоятельному развёртыванию. А строили мы на немодифицированных контрактах Safe, потому что скучный, проверенный временем путь — правильный, когда речь о чужих деньгах: это те же контракты, которые уже охраняют миллиарды в блокчейне.
Компромисс, который мы выбрали
Компромисс всё же есть, и замалчивать его было бы нечестно.
С Vela ваш аккаунт Apple или Google важен: именно там живёт синхронизируемый passkey. Потеряете этот аккаунт или удалите passkey — и не будет ни сид-фразы, ни сброса через поддержку, ни чёрного хода.
Но любой некастодиальный кошелёк заставляет выбрать, с каким риском вам жить спокойнее. Сид-фразу можно скопировать, сфотографировать, выманить фишингом или вбить не на том сайте в час ночи. Passkey устроен иначе: нет слов, которые можно выдать, нет секрета, который можно вставить, и нет поддельного сайта, который выманит его у вас. Браузер предлагает его только страницам на настоящем домене.
И выбор не бинарный. Кошелёк можно создать с несколькими подписывающими ключами — до семи, и любой из них подписывает сам по себе: passkey на разных устройствах, телефон рядом, который вы сканируете, или ключ безопасности USB/NFC. Если вы хотите, чтобы кошелёк вообще не зависел от аккаунта платформы, можно обойтись одними аппаратными ключами безопасности — двумя, потому что кошелёк не может держаться на единственном ключе, который нигде не синхронизируется. Единственное условие — момент: адрес выводится из всего набора ключей, поэтому ключи выбираются при создании кошелька.
Вот почему существует Vela
Кошелёк, в котором не нужно прятать сид-фразу, не нужно доверять ключу восстановления и не нужно надеяться, что какая-то компания будет жить вечно.
Если хотите проверить эти утверждения, а не принимать их на веру: в whitepaper описана архитектура, в разделе Аудиты и известные проблемы перечислены все контракты, от которых мы зависим, и что прошло аудит, а что нет, а весь код лежит на GitHub.
Дальше: установка Vela.