Развертывание собственного узла Ethereum
Последнее редактирование: @sumtranslator(opens in a new tab), 23 июля 2024 г.
Запуск собственного узла дает вам различные преимущества, открывает новые возможности и помогает поддерживать экосистему. Эта страница поможет вам развернуть собственный узел и принять участие в проверке транзакций Ethereum.
Прежде чем начать
Вы должны понимать, что такое узел Ethereum и почему вам может понадобиться запустить клиент. Это описано в статье Узлы и клиенты.
Если тема запуска собственного узла для вас новая или вы ищете менее «технический» способ, посмотрите наш более понятное для новичков введение в запуск узлов Ethereum.
Выбор подхода
Первый шаг в разворачивании вашего узла — выбор подхода. Вы должны выбрать клиент (программное обеспечение), среду и параметры, с которыми хотите начать. Просмотрите все доступные клиенты основной сети.
Настройки клиента
Реализации клиента включают различные режимы синхронизации и многие другие параметры. Режимы синхронизации представляют собой различные методы загрузки и проверки данных блокчейна. Перед запуском узла следует решить, какую сеть и режим синхронизации использовать. Наиболее важно учитывать дисковое пространство и время синхронизации, которые потребуются клиенту.
Все функции и опции можно найти в документации клиента. Различные конфигурации клиента можно установить, запустив клиент с соответствующими флагами. В целях тестирования вы можете запустить клиент в одной из тестовых сетей. Обзор поддерживаемых сетей.
Среда и оборудование
Локально или в облаке
Клиенты Ethereum могут работать на компьютерах потребительского класса и не требуют специального оборудования (например, в отличие от майнинга). Таким образом, в зависимости от ваших нужд вам доступны различные способы развертывания. Для упрощения давайте рассмотрим запуск узла как на локальной физической машине, так и на облачном сервере.
- Облако
- Провайдеры предлагают большое время безотказной работы сервера и статические общедоступные IP-адреса
- Получение выделенного или виртуального сервера может быть более удобным, чем создание собственного
- Необходимость доверяться третьей стороне — поставщику серверов
- Из-за большого размера хранилища для полного узла цена арендованного сервера может быть высока
- Собственное оборудование
- Более независимый подход, требующий меньшего доверия посторонним
- Однократное вложение
- Возможность покупки преднастроенной машины
- Необходимость подготовить и обслуживать оборудование, а также устранять возможные проблемы
Оба варианта имеют различные преимущества, описанные выше. Если вы ищете облачное решение, помимо многих традиционных поставщиков облачных вычислений есть сервисы, ориентированные на развертывание узлов. Например:
- Узлы(opens in a new tab)
- Blockdaemon(opens in a new tab)
- LunaNode(opens in a new tab)
- Alchemy(opens in a new tab)
Аппаратное обеспечение
Однако устойчивая к цензуре децентрализованная сеть не должна полагаться на облачных провайдеров. Для экосистемы будет полезнее, если вы запустите свой узел на собственном оборудовании. Самыми простыми вариантами являются преднастроенные машины, такие как:
Проверьте минимальные и рекомендуемые требования к дисковому пространству для каждого клиента и режима синхронизации. Обычно для этого достаточно довольно скромной вычислительной мощности. Проблема обычно заключается в скорости диска. Во время начальной синхронизации клиенты Ethereum выполняют множество операций чтения и записи. Поэтому настоятельно рекомендуется использовать SSD. Клиент может даже не иметь возможности синхронизировать текущее состояние на HDD диске(opens in a new tab), застревая в нескольких блоках позади основной сети. Большинство клиентов можно запустить на одноплатном компьютере с ARM. Вы также можете использовать операционную систему Ethbian(opens in a new tab) для Raspberry Pi 4. Это позволит вам запустить клиент с SD-карты. В зависимости от выбранного вами программного и аппаратного обеспечения время первоначальной синхронизации и требования к объему хранилища могут различаться. Обязательно проверьте время синхронизации и требования к хранилищу. Также убедитесь, что у вашего интернет-соединения нет ограничения пропускной способности(opens in a new tab). Рекомендуется использовать безлимитное соединение, так как первоначальная синхронизация и обмен данными с сетью могут превысить ваш лимит.
Операционная система
Все клиенты поддерживают основные операционные системы — Linux, MacOS, Windows. Это означает, что вы можете запускать узлы на обычных настольных компьютерах или серверах с операционной системой (ОС), которая подходит вам лучше всего. Убедитесь, что ваша ОС обновлена, чтобы избежать потенциальных проблем и уязвимостей.
Раскрутка узла
Получение клиентского программного обеспечения
Сначала скачайте клиентское программное обеспечение
Вы можете просто скачать исполняемое приложение или установочный пакет, который подходит вашей операционной системе и архитектуре. Всегда проверяйте подписи и контрольные суммы скачанных пакетов. Некоторые клиенты также предлагают репозитории для упрощения установки и обновления. Если хотите, можете сами собрать из исходников. Все клиенты имеют открытый исходный код, поэтому вы можете собрать их из исходного кода с помощью соответствующего компилятора.
Исполняемые файлы для стабильных реализаций клиентов основной сети можно загрузить со страниц их выпусков:
- Geth(opens in a new tab)
- OpenEthereum(opens in a new tab)
- Nethermind(opens in a new tab)
- Besu(opens in a new tab)
- Erigon(opens in a new tab)
Обратите внимение, что OpenEthereum устарел(opens in a new tab) и больше не поддерживается. Используйте его с осторожностью и по возможности перейдите на другую реализацию клиента.
Запуск клиента
Перед запуском клиентского программного обеспечения Ethereum убедитесь что ваша среда готова. Например, убедитесь в следующем:
- На диске достаточно места с учетом выбранной сети и режима синхронизации.
- Память и ЦП не нагружаются другими программами.
- Операционная система обновлена до последней версии.
- В системе установлены правильное время и дата.
- Ваш маршрутизатор и брандмауэр принимают подключения к прослушиваемым портам. По умолчанию клиенты Ethereum используют порт слушателя (TCP) и порт обнаружения (UDP), оба по умолчанию 30303.
Сначала запустите свой клиент в тестовой сети, чтобы убедиться, что все работает правильно. Необходимо указать все настройки клиента, которые не установлены по умолчанию. Вы можете использовать конфигурационный файл, чтобы определить свой набор настроек. Конкретные настройки можно найти в документации вашего клиента Исполнение клиента запустит его базовые функции и выбранные конечные точки, а затем начнется поиск узлов одноранговой сети. Когда узел найдет одноранговые соединения, клиент начнет синхронизацию. Актуальные данные блокчейна будут доступны, как только клиент закончит синхронизацию до текущего состояния.
Использование клиента
Клиенты предоставляют конечные точки RPC API, которые можно использовать для управления клиентом и взаимодействием с сетью Ethereum различными способами:
- Вызывать API вручную через наиболее подходящий протокол (например, через
curl
) - Подсоединять предоставленную консоль (например,
geth attach
) - Использовать в приложении
У разных клиентов различаются реализации конечных точек RPC. Но существует стандарт JSON-RPC, которые можно использовать с любым клиентом. Обзор приведен в документации JSON-RPC(opens in a new tab). Приложения, которым требуется информация из сети Ethereum, могут использовать этот RPC. Например, популярный кошелек MetaMask позволяет вам запустить локальный узел и присоединиться к нему(opens in a new tab).
Доступ к RPC
Порт JSON-RPC по умолчанию — 8545
, но порты локальных конечных точек можно изменять в конфигурационном файле. По умолчанию интерфейс RPC доступен только с локального хоста компьютера. Чтобы сделать его доступным удаленно, можно сделать его открытым, сменив адрес на 0.0.0.0
. Это сделает ваш узел доступным для локальных и публичных IP-адресов. В большинстве случаев вам также нужно настроить переадресацию портов на маршрутизаторе.
Совершать подобные манипуляции нужно с осторожностью, так как это позволит любому в Интернете управлять вашим узлом. Злонамеренные пользователи, имея доступ к вашему узлу, могут навредить системе или украсть ваши активы, если вы используете свой клиент как кошелек.
Эту проблему можно решить, предотвратив изменение потенциально опасных методов RPC. Например, в geth
можно задать методы, которые можно будет использовать для модификации, через опцию командной строки: --http.api web3,eth,txpool
.
Вы также можете размещать доступ к RPC интерфейсу, указывая службу веб-сервера, например Nginx, на локальный адрес и порт вашего клиента.
Наиболее конфиденциальный и одновременно простой способ настроить публично доступную конечную точку — развернуть ее как сервис onion Tor(opens in a new tab). Это позволит вам получать доступ к RPC за пределами вашей локальной сети без статического публичного IP-адреса или открытых портов. Для этого:
- Установите
tor
- Отредактируйте конфигурационный файл
torrc
, чтобы настроить скрытую службу с адресом и портом вашего RPC клиента - Перезапустите службу
tor
После перезапуска Tor вы получите имя хоста и ключи скрытой службы в желаемой директории. С этого момента ваш RPC будет доступен в сети Tor по своему имени хоста .onion
.
Управлением узлом
Вы должны регулярно проверять свой узел, чтобы убедиться, что он работает правильно. Время от времени может быть необходимо проводить техническое обслуживание.
Поддержание работы узла в сети
Ваш узел необязательно должен быть постоянно подключен к сети, но желательно держать его в сети как можно дольше, чтобы поддерживать его синхронизацию с сетью. Вы можете отключить его для перезапуска, но имейте в виду:
- Завершение работы может занять несколько минут, если последнее состояние все еще записывается на диск.
- Принудительное отключение может повредить базу данных.
- Ваш клиент не будет синхронизироваться с сетью, и при перезапуске потребуется повторная синхронизация.
Это не относится к узлам-валидаторам слоя консенсуса. Выключение вашего узла повлияет на все службы, которые от него зависят. Если вы запускаете узел для стейкинга, вы должны минимизировать время простоя, насколько это возможно.
Создание клиентской службы
Рассмотрим возможность создания службы для автоматической активации клиента при запуске. Например, на серверах Linux хорошим решением будет создание службы, которая выполняет клиент с определенной конфигурацией от имени пользователя с ограниченными правами и перезапускается автоматически.
Обновление клиента
Вам необходимо постоянно обновлять клиентское программное обеспечение последними исправлениями безопасности, функциями и EIP. Перед хард-форками обязательно нужно убедиться, что вы используете правильную версию клиента.
Каждая реализация клиента имеет человекочитаемую строку версии, используемой в протоколе одноранговой связи, но она также доступна из командной строки. Эта строка версии позволяет пользователям убедиться, что они используют правильную версию, и использовать обозреватели блоков и другие аналитические инструменты, задействованные в количественной оценке распространения определенных клиентов в сети. Более подробную информацию о строках версии можно получить в документации к конкретному клиенту.
Запуск дополнительных служб
Запуск собственного узла дает возможность вашим службам использовать прямой доступ к клиентскому RPC сети Ethereum. Такие службы построены поверх Ethereum, примером чего могут быть решения слоя 2, консенсус-клиенты и другие части инфраструктуры Ethereum.
Наблюдение за узлом
«Чтобы правильно организовать наблюдение за узлом, представьте сбор метрик. Клиенты предоставляют конечные точки с метриками, и вы можете получить сравнительные данные о вашем узле. Используйте инструменты, подобные InfluxDB(opens in a new tab) или Prometheus(opens in a new tab), для создания баз данных, которые вы можете превратить в визуализации и графики через такие инструменты, как Grafana(opens in a new tab). Вы можете использовать это программное обеспечение и другие панели Graphana в различных конфигурациях, чтобы визуализировать свой узел и всю сеть в целом. При отслеживании всегда обращайте внимание на производительность вашей системы. Во время первоначальной синхронизации узла клиентская программа может оказывать очень большую нагрузку на процессор и оперативную память. В дополнение к Graphana вы можете использовать инструменты, которая предлагает ваша операционная система, подобные htop
или uptime
.
Дополнительные ресурсы
- Анализ требований к оборудованию, чтобы стать полностью проверенным узлом Ethereum(opens in a new tab) — Альберт Палау, 24 сентября 2018 г.
- Запуск полных узлов Ethereum: руководство для сомневающихся(opens in a new tab) — Джастин Леру, 7 ноября 2019 г.
- Запуск узла Hyperledger Besu в основной сети Ethereum: преимущества, требования и настройка(opens in a new tab) — Фелипе Фараджи, 7 мая 2020 г.
- Развертывание клиента Nethermind Ethereum со стеком мониторинга(opens in a new tab) — Nethermind.eth, 8 июля 2020 г.