
Свой узел: зачем он и почему большинству он не нужен
Каждый раз, когда кошелёк показывает вам баланс, он повторяет то, что ему сказал сервер. Вы смотрите не на блокчейн. Вы смотрите на ответ одного компьютера на вопрос о блокчейне и принимаете этот ответ на веру.
Свой узел — способ перестать так делать. Это ещё и больше работы, чем обычно рассказывают, и для большинства людей это по-настоящему лишнее. Верно и то и другое, а интересно понять, по какую сторону черты находитесь вы.
Что такое узел на самом деле
Узел скачивает блокчейн и сам проверяет каждое правило. Были ли подписи действительны? Не потрачено ли что-то дважды? Соответствовал ли каждый блок цели сложности? Выплатила ли coinbase-транзакция правильную награду?
Это не майнинг. Майнинг — состязание за выпуск новых блоков. Узел лишь проверяет, и различие важно, потому что именно проверка решает, что истинно для вас.
В этом вся суть. Держа узел, вы никого не спрашиваете, действительна ли транзакция. Ваша машина выводит это из правил. Если блок их нарушил, ваш узел его отвергнет — сколько бы других его ни приняли и что бы ни говорил любой обозреватель.
Три вещи, которые вы действительно получаете
Проверку. Вы сами сверяете консенсус, и это важнее всего именно тогда, когда неудобнее всего: при спорной развилке, расколе цепочки или ошибке консенсуса. Сбой консенсуса Ravencoin — событие того рода, когда «что говорит обозреватель» и «что говорят правила» ненадолго расходятся. Узлу никогда не приходится гадать, за какой цепочкой идти.
Приватность — и её недооценивают. Когда кошелёк спрашивает баланс у публичного сервера, он сообщает этому серверу, какие адреса ваши. Хуже того, кошельки, синхронизирующиеся по расширенному открытому ключу, отдают возможность вывести каждый адрес, который счёт когда-либо использует, — ровно ту связность, избегание которой и составляет приватность в цепочке. Спросите свой узел — и сообщать некому. Вы спрашиваете сами себя.
Рассылку, в которой никто не откажет. Ваш узел объявляет транзакцию прямо одноранговой сети, а не передаёт сервису, который мог бы её отбросить.
Затраты, названные честно
Диск. Полный архивный узел биткоина занимает несколько сотен гигабайт и растёт каждый год. Обрезка сильно это сокращает, но обрезанный узел выбросил историю, что ограничивает повторное сканирование и не позволяет питать индексатор.
Начальная синхронизация. Проверка цепочки от генезис-блока занимает часы на хорошем железе и дни на Raspberry Pi с медленным диском. Это делается один раз, и это по-настоящему утомительно.
Доступность и уход. Выключенный узел — отстающий узел. Когда вы возвращаетесь, он догоняет, а тем временем кошелёк ждёт или обращается к чужому серверу. Программу надо обновлять, диски заполняются, выходят изменения консенсуса.
Сбой, о котором никто не говорит. Заброшенный узел хуже, чем никакой. Если он отстаёт на недели, молча завис или работает на версии, отвергнувшей мягкий форк, который приняли все остальные, он уверенно будет давать неверные ответы. Самопроверка помогает, только если проверяющее само исправно.
Честный вердикт
Большинству людей узел держать не стоит, и стыдиться тут нечего.
Польза растёт с тем, сколько вы держите, как часто совершаете транзакции и насколько вам важно не сообщать третьей стороне, какие адреса ваши. Для того, кто держит скромную сумму и отправляет транзакцию раз в несколько месяцев, узел — хобби, пусть и интересное, но не прирост безопасности, соразмерный усилиям.
По-настоящему он окупается, когда вы держите сумму, потеря которой больно ударит, совершаете транзакции достаточно часто, чтобы третья сторона составила реальную картину вашей активности, ведёте бизнес с нормативными или операционными причинами для независимой проверки, или просто предпочитаете владеть инфраструктурой, а не арендовать её.
Кто говорит, что самостоятельное хранение требует узла, преувеличивает. Кто говорит, что узел ничего не меняет, преуменьшает. Он покупает конкретные вещи по конкретной цене, и расчёт у каждого свой.
Что SSP действительно позволяет
Вот часть, делающая всё это конкретным, а не теоретическим.
SSP не привязывает вас к нашей инфраструктуре. В настройках можно переопределить бэкенд для каждой цепочки — node, api и explorer редактируются, а кошелёк во время работы накладывает ваши значения поверх стандартных. Изящная деталь реализации: если сохраняемое значение совпадает с поставляемым по умолчанию, оно удаляется из хранилища, а не записывается, так что хранилище переопределений содержит только настоящие изменения.
Значит, если вы держите собственную инфраструктуру, можно направить SSP на неё и перестать опрашивать нашу.
Теперь честная оговорка, потому что она реальна. Для UTXO-цепочек SSP общается с индексатором в стиле Blockbook, а не с голым узлом. Одного bitcoind мало — понадобится ещё индексирование Blockbook поверх, а это тяжелее простого полного узла: больше диска, больше настройки, больше обслуживания. Для EVM-цепочек планка ниже, поскольку указать собственную точку RPC ближе к прямой замене.
Это ощутимый разрыв между «можно использовать свой узел» и «использовать свой узел легко», и мы предпочитаем назвать его, а не позволить полю настроек намекать на более гладкий путь, чем существует.
И ещё для ясности: свой узел меняет то, что видят серверы данных цепочки. Он не меняет того, что обрабатывает релей, когда ваши два устройства согласуются. Это разные вопросы с разными ответами, и решение одного не решает другой.
Если хотите попробовать
Начните с той цепочки, что важнее всего, а не со всех сразу. Возьмите машину, которую не жалко оставить включённой, с настоящим SSD — начальная синхронизация на механическом диске по-настоящему мучительна. Дайте ей полностью синхронизироваться, прежде чем на неё полагаться. Потом направьте на неё один кошелёк и посмотрите, заметите ли разницу.
Возможно, не заметите, и это законный результат. Вы узнаете нечто конкретное о собственной модели угроз, а это ценнее абстракции, с которой вы начали.
Основную мысль стоит сохранить, даже если вы никогда не запустите узел. Каждый баланс, который вы видели, откуда-то взялся, и его произвёл чей-то сервер. Понимать, что вы доверяете ответу, а не видите цепочку, — большая часть ценности. Держать узел — лишь возможность перестать.


