Представьте себе: вы летите через Атлантику, в салоне отключён интернет, а сосед по креслу просит одолжить ему сотню тысяч сатоши. Вы достаёте телефон, открываете любимый Lightning-кошелёк и видите "ошибка подключения к серверу". Ключи у вас в кармане, сид-фраза записана на листке бумаги, но перевести деньги вы не можете. Вот она, практическая разница между владеть и распоряжаться.
В первой части статьи мы разобрались, как слои доверия могут прятаться даже под слоганом self-custody. Но серверы, обслуживающие кошельки, добавляют к этой матрёшке ещё один набор сюрпризов. И это касается даже Биткоина. Или даже так: в особенности Биткоина. Давайте разберёмся, что именно мешает мгновенно распоряжаться сатошами, даже когда приватный ключ лежит в вашем телефоне.
Как известно, места в блокчейне Биткоина не очень много. Если все люди на Земле начнут пользоваться Биткоином, то в среднем каждый из них за свою жизнь сможет провести лишь две транзакции: ведь на запись 8 миллиардов транзакций в блоки Биткоина уходит 36 лет! Поэтому в случае массового распространения останется лишь один способ переводить биткоины: через вторые слои.
На сегодняшний день самый известный второй слой Биткоина - это Lightning Network. Я о нём подробнее рассказывал здесь. Почитайте, если ещё не читали.
Вкратце напомню, что Lightning Network - это сеть платёжных каналов. В каждом канале лежат сатоши, и они принадлежат сразу двум людям, между которыми этот канал проложен. Сатоши двигаются по каналу туда-сюда, и после каждого перемещения у обоих владельцев появляется подписанная ими обоими транзакция, позволяющая любому из них вывести свою часть сатошей из канала на свой личный адрес.
Таким образом по задумке создателей Lightning Network достигается постоянный контроль каждого над своими сатошами. Но для этого контроля нужны две составляющих:
Лучше всего об этой особенности высказались создатели кошелька Muun:
И в случае с Lightning это действительно так. Если у вас есть ключ, но по какой-то причине нет доступа к актуальной транзакции закрытия канала (например, сломался сервер, на котором она хранилась), то вам придётся полагаться на добросовестность второй стороны канала, чтобы вывести свои сатоши.
Если у вас полноценный узел Молнии, то транзакция хранится на нём. Но многие ли сейчас запускают полноценные узлы?
Я думаю, что большинство пользователей Lightning Network выбирают мобильные кошельки, которые позволяют легко и быстро отправлять и получать сатоши: ведь именно в этом прелесть Lightning Network, не так ли?
Особенно если учесть, что производители таких кошельков в один голос заявляют о self-custody:
Все кошельки, скриншоты описаний которых представлены выше, давали пользователям сид-фразу, и для непосвящённых это было свидетельством некастодиального хранения. Но на самом деле ни в одном из этих кошельков не было даже кнопки закрытия канала - и уж тем более клиенту не была доступна транзакция, позволявшая закрыть канал в одностороннем порядке. Чтобы вывести сатоши, обязательно нужно было, чтобы операцию одобрил сервер, обслуживающий кошелёк. Сервер ушёл в оффлайн, или сервер отказывается провести операцию - и всё, сатоши уже не ваши.
Из тех кошельков, которые упомянуты на скриншотах, наиболее показательная история случилась с кошельком Bitmask. После очередного обновления разработчики случайно убрали из интерфейса все упоминания активов в Lightning Network. И это означало полную потерю доступа пользователей к их средствам в этой сети. Старые версии кошелька перестали работать, а в новой сатоши на Молнии просто не отображаются. Если вы использовали кошелёк только для Lightning Network, то теперь кошелёк будет вам показывать, что у вас вообще ничего нет.
И наличие сид-фразы ничем не поможет. Если импортировать сид-фразу в какое-нибудь другое приложение, можно увидеть те активы, которые хранятся на основном слое Биткоина (если они есть). Но активы в платёжных каналах Молнии в любом случае будут недоступны.
Ещё более сложно обстоят дела с кошельками, использующими архитектуру Breez SDK / Greenlight. Это кошельки Green, Relai, Blitz и несколько других. У них всё взаимодействие с сетью Lightning Network происходит через сервер Greenlight. С одной стороны, это даёт возможность импортировать сид-фразу из одного такого кошелька в другой и увидеть активы на Молнии. С другой стороны, вы максимально зависите от сервера Greenlight. Если произойдёт технический сбой, и канал закроется, ваши активы останутся на этом сервере, а не у вас.
История обращений в GitHub кошелька Green показывает, что ждать, когда команда разработчиков решит проблему и вернёт вам ваши сатоши, иногда приходится по несколько месяцев. Разве так должно выглядеть некастодиальное хранение?
Сообщение об ошибке вывода в кошельке Green. Источник - GitHub Blockstream.
А бывает и прямой обман. Ныне прекративший своё существование кошелёк Mutniy тоже заявлял о self-custody. Разумеется, он давал своим пользователям сид-фразу, которая должна была означать, что у пользователей есть полный контроль над их средствами.
Но вот однажды разработчики кошелька решили ввести комиссию за приходные операции. Поступила к вам любая сумма - кошелёк удерживает из неё ровно 1 сатоши. Вроде бы комиссия мизерная, и можно было бы с ней согласиться, но у пользователей возник вопрос: а как кошелёк это делает?
Разумеется, такой кошелёк не снискал популярности в биткоин-сообществе и в конце концов вынужден был закрыться. А при закрытии прикарманил себе часть средств пользователей. А что: если можешь забрать у пользователя 1 сатоши без его согласия, то почему бы не забрать и больше? Особенно когда проект закрывается, и репутация уже неважна.
Часто мы видим слово self-custody и думаем: вот это то, что нам нужно. Но производители кошельков это отлично понимают и вставляют это слово даже там, где ему не должно быть места.
Поэтому, если видите упоминание self-custody, задайте несколько вопросов:
И не только задать вопросы, а ещё и попробовать. Если речь идёт о кошельке для новой сети, в которой у вас пока нет активов, можно воспользоваться обменным сервисом rabbit.io и отправить в свой кошелёк маленькую сумму, которую, если что, не страшно потерять. У нас минимальные суммы для обмена очень низки.
Сравните сумму, которая отображается на нашем сайте, с суммой, которая появилась в вашем кошельке. Если входящий перевод "подстригли" на комиссию, значит, у разработчиков кошелька есть возможность ограбить вас.
Ну и, наконец, сделайте бэкап, удалите кошелёк со своего устройства, перезагрузите устройство и установите кошелёк снова - проверьте, получится ли восстановить доступ к средствам. Только после этого можно считать проверку пройденной, а кошелёк - готовым к использованию.
Желаю вам не попасться в ловушку, а пользоваться только теми кошельками, которые на самом деле предоставляют полную свободу распоряжения вашими средствами.