Full Node — программа, которая самостоятельно проверяет правила Bitcoin. Она работает на компьютере, получает блоки и транзакции и определяет, какие могут войти в действительную историю. Со своим узлом вы не обязаны полагаться при проверке на слова майнера или чужого сервера. Но чтобы и кошелёк получил пользу, он должен действительно использовать этот узел как источник данных.
Представьте, что кошелёк показывает полученный платёж. Откуда он знает, что транзакция действительно принадлежит истории Bitcoin и соблюдает правила? Он может спросить чужой сервер или воспользоваться вашим узлом. Full Node делает второй вариант реальным: сам проверяет действительность полученных данных. Он не спрашивает большинство подключённых компьютеров, как ему решить. Если кто-то пришлёт нарушающий правила блок, узел его отклонит. Поэтому больше соединений не заменяет проверку. Собственный узел позволяет контролировать данные, на которых основаны ваши платежи. [1] [3]
Узел проверяет связи блоков, их заголовки и Proof of Work — вычислительное доказательство, требуемое для блока. В транзакциях он, в частности, проверяет ссылки на существующие средства, отсутствие двойного расходования и выполнение условий использования. Условия записаны в скриптах, небольших наборах программных правил. Проверяется и количество вновь созданных биткоинов. Текущий результат — UTXO set, набор неизрасходованных выходов транзакций: учёт конкретных средств, которые ещё можно использовать. Большая накопленная работа может определить выбор между двумя действительными ветвями, но не сделает недействительный блок действительным. [1]
Нет. Full Node проверяет блоки и транзакции; обычная проверка сама по себе не приносит награды за блок. Майнер, напротив, составляет предложение блока и повторяет вычисления, пока не найдёт подходящий результат. Он использует хеш, цифровой отпечаток заголовка блока. Роли могут работать вместе: майнеру нужно знать, какую историю он продолжает и какие транзакции может включить. Но это не означает, что каждый узел обязан майнить. Проверка и соревнование за следующий блок — разные занятия. [5] [1]
Новому узлу сначала нужно догнать историю сети. Он скачивает блоки и обрабатывает данные — это начальная синхронизация. Важно различать два способа ускорения в расширенных настройках. При определённых условиях assumevalid позволяет Bitcoin Core пропускать старые проверки скриптов; assumevalid=0 отключает эту оптимизацию. AssumeUTXO позволяет загрузить снимок состояния, или snapshot: сохранённое состояние неизрасходованных средств для определённого блока. Его отпечаток сравнивается со значением, включённым в исходный код. Предыдущая история затем проверяется в фоне. Поэтому возможность работать с текущим состоянием сама по себе не означает завершения исторической проверки. [1] [2]
Full Node не обязан навсегда хранить все старые файлы блоков. Pruning удаляет часть после обработки, но сохраняет текущий UTXO set и нужные более новые данные. Узел продолжает проверять новые блоки. Архивный узел хранит старые, чтобы передавать их другим или просматривать заново. Экономия диска поэтому не равнозначна клиенту SPV, то есть клиенту с упрощённой проверкой платежей. Он не проверяет все транзакции и их состояние так же, как Full Node. Разница в том, что вы проверяете, а не только в количестве файлов. [3]
При обычной синхронизации узел с обрезкой скачивает и обрабатывает исторические блоки, прежде чем постепенно удалять их. Поэтому Pruning не служит переключателем для пропуска их проверки. Его задача — экономить место. Упомянутые оптимизации — отдельный вопрос: assumevalid при определённых условиях пропускает старые проверки скриптов, а AssumeUTXO позволяет пользоваться снимком состояния, пока проверка истории ещё идёт. Оценивая готовность узла, смотрите на способ синхронизации и фактический прогресс, а не только на размер данных на диске. [3] [2]
Кошельку нужны данные о транзакциях и подтверждениях. Если он получает их с чужого сервера, то отправляет запросы, из которых сервер может узнать что-то о его платежах. Подключение к своему Full Node позволяет брать проверенные вашим узлом данные без этих запросов к стороннему серверу. Однако установка и запуск узла не переподключают кошелёк автоматически. Важен источник данных, который он действительно поддерживает и использует. Собственный узел также не гарантирует анонимности: приватность зависит и от других сетевых данных и от того, как вы пользуетесь кошельком. [3] [4]
Узел может работать без ваших приватных ключей. Ключи позволяют подписывать платежи, а узел проверяет соответствие транзакций и блоков правилам. Эти задачи не обязательно выполняет одно устройство. Поэтому проверьте не только то, что ваш узел где-то работает, но и откуда кошелёк читает данные и как распространяет транзакции. Самостоятельная проверка не заменяет безопасной резервной копии ключей и не убирает все сведения, раскрываемые сетевым общением. Она помогает в конкретной части процесса — независимо проверять данные Bitcoin. [3] [4]
У узла два разных интерфейса. Через P2P-соединения он обменивается блоками и транзакциями с другими узлами. RPC — интерфейс, через который приложения дают команды и могут при определённых условиях управлять также его кошельком. Поэтому открытие входящего P2P-порта для обмена данными отличается от предоставления RPC посторонним. Bitcoin Core рекомендует не открывать RPC напрямую в публичный интернет. Для местного доступа обычно используются учётные данные из файла .cookie, подтверждающие полномочия приложения. Это не отслеживающий cookie браузера. [4]
Команды узла позволяют проверить больше, чем зелёную иконку. В getblockchaininfo смотрите на правильную сеть, blocks как число обработанных блоков, headers как число известных заголовков и initialblockdownload для начальной синхронизации. При использовании снимка состояния getchainstates помогает отличить текущее состояние от проверки истории в фоне. Само количество соединений не доказывает полной проверки. Наконец, убедитесь, что узел не остался на устаревшей вершине цепочки и кошелёк действительно берёт данные именно с него. Только тогда независимая проверка узла приносит пользу при работе с кошельком. [2] [1]
Для полной картины прочитайте эту статью вместе с Bitcoin, Timechain / Blockchain, Транзакция, UTXO, Proof of Work. На эту статью также ссылаются Bitcoin, Satoshi Nakamoto, Timechain / Blockchain, Proof of Work.