Клиент блокчейна: full/light/archive и execution vs consensus

Клиент блокчейна — это программное обеспечение узла, которое подключается к одноранговой сети, валидирует блоки и транзакции, хранит состояние/историю и, при необходимости, участвует в создании блоков. Термины «клиент» и «узел» часто употребляют взаимозаменяемо: клиент — программа (реализация протокола), узел — запущенный экземпляр этой программы.

Зачем это нужно

  • Децентрализация и доверие. Собственный узел самостоятельно проверяет правила протокола без зависимости от чужих RPC.
  • Приватность и устойчивость. Меньше утечек метаданных (адреса, IP) и устойчивость к отключению публичных провайдеров (см. приватность).
  • Инфраструктура dApp/бирж. Провайдит mempool, индексацию, доступ к историческим данным, отправку транзакций (см. транзакция).

Типы клиентов / узлов

Тип Что делает Для чего подходит
Полный узел (full node) Валидирует все блоки и транзакции, хранит актуальное состояние. Базовый уровень доверия и независимости.
Архивный узел (archive) Дополнительно хранит всю историю состояний/индексов. Аналитика, индексация, исторические запросы.
Лёгкий клиент (light/SPV) Проверяет включение через заголовки/доказательства (без полной истории). Кошельки, мобильные клиенты, ограниченные ресурсы.
Валидатор/майнер Участвует в создании блоков (PoS/PoW), требует онлайн-доступности. Стейкинг/майнинг, безопасность сети.
Sentry/гейт-узел Прокси-узел, «экранирующий» валидатор от прямых пиров. Безопасность валидатора, защита от атак.

В Ethereum после The Merge различают execution client (EVM/транзакции) и consensus client (Beacon/слоты/финальность). Оба компонента нужны валидатору.

Архитектура / компоненты клиента

  • P2P-стек. Менеджмент пиров, госсип-протоколы, защита от спама/элипс-атак.
  • Хранилище. База блоков/состояния (LevelDB/RocksDB), индексы, стратегия «pruning».
  • Правила консенсуса. Проверка заголовков, сложности/слотов, финальности (см. difficulty adjustment, nonce).
  • Исполнение транзакций. Верификация сигнатур, применение к состоянию (UTXO/аккаунты; см. UTXO).
  • Mempool. Приём, проверка и приоритизация транзакций по комиссии/политикам.
  • RPC/интерфейсы. JSON-RPC/WS/GraphQL для кошельков, dApp, бэкендов.
  • Наблюдаемость. Метрики/логи, алерты, экспорт в мониторинг.

Как это работает (по шагам)

  • Бутстрап и синхронизация. Узел находит пиров, скачивает заголовки/снимки и догоняет цепь (fast/snap-sync, полно/архивно).
  • Валидация. Для каждого блока проверяются заголовок, подписи/PoW-цель, корректность транзакций и обновление состояния.
  • Mempool. Узел принимает транзакции, фильтрует по политике, ретранслирует и подаёт в локальные приложения.
  • Участие в консенсусе (опционально). Валидатор/майнер формирует кандидаты блоков, подписывает и публикует; получает награды/штрафы (см. PoW, PoS).
  • RPC-обслуживание. Отвечает на запросы кошельков/dApp: балансы, калл-трейс, отправка транзакций и т. п.

Эксплуатация: требования и настройки

Область Рекомендации
ОС и железо SSD, достаточная RAM/CPU; для архивов — много диска и IOPS.
Сеть Стабильный аплинк, открытые порты P2P; ограничение публичного RPC, rate-limit.
Хранилище Мониторинг места, периодический pruning/снапшоты, резервные копии конфигов/ключей.
Обновления Следить за релизами клиентов и хардфорками; планировать окна обновлений.
Безопасность Файрвол, отдельный пользователь ОС, systemd, без публичного –unsafe-rpc/методов; sentry-топология для валидаторов.
Наблюдаемость Метрики (Prometheus), логи, алерты по пировкам, лагу, просадкам диска/мемпула.

Риски и уязвимости

  • Открытый RPC. Неавторизованный доступ → «drain», произвольные вызовы; держите RPC за reverse-proxy и ACL.
  • Eclipse-атаки. Изоляция узла от честной сети через контролируемые пиры; помогает пировка, разнообразие адресов, sentry-паттерн.
  • Коррупция базы. Падения/сбой диска → повреждение; используйте надёжные SSD, резервное копирование, проверку целостности.
  • Неактуальный клиент. Форки/несовместимость протокола → десинхронизация и риск ошибки валидации.

Практика внедрения / кейсы

  • Свои кошельки и dApp. Поднимите full node и обслуживайте RPC изолированно; для публичных эндпоинтов — лимиты и кэш.
  • Валидатор PoS. Разделите роли: валидатор за sentry-узлами, аппаратные ключи, мониторинг «пропусков слотов», автоматическая перезагрузка.
  • Аналитика. Архивный узел + индексатор событий/логов; отдельный сервер БД для агрегатов.
  • Мультисеть. Разносите узлы по ВМ/машинам; общий мониторинг и алерты по сетям.

FAQ

Чем «клиент» отличается от «узла»? Клиент — программа (реализация протокола); узел — её запущенный экземпляр в сети.

Нужен ли свой узел для обычного пользователя? Нет, можно пользоваться публичными RPC. Но свой узел повышает приватность, надёжность и контроль.

Что такое pruning и архивный режим? Pruning удаляет старые промежуточные состояния, оставляя актуальные — экономит место. Архивный хранит весь исторический контекст (дороже).

Лёгкий клиент безопасен? Да, при корректной проверке заголовков и доказательств (SPV/заголовки). Он не даёт всех исторических данных, но подходит для кошельков.

В Ethereum зачем два клиента (execution/consensus)? Execution исполняет транзакции и EVM; consensus управляет слотами, аттестациями и финальностью. Валидатору нужны оба.

Можно ли держать публичный RPC? Можно, но через аутентификацию/лимиты, без опасных методов, за прокси/фаерволом и с мониторингом.

См. также

Блокчейн

Транзакция

Цифровая подпись

Nonce

Комиссии

UTXO

Роллапы

Кроссчейн-мосты

Приватность

Двойная трата

Self-custody

Bitcoin (BTC)

Ethereum

Task Runner