Перейти к основному контенту

Запуск узла Эфириума на Raspberry Pi 4

клиенты
уровень исполнения
уровень консенсуса
узлы
Средний уровень
EthereumOnArm
10 июня 2022 г.
7 минут на чтение

Ethereum on Arm — это пользовательский образ Linux, который может превратить Raspberry Pi в узел Эфириума.

Для использования Ethereum on Arm с целью превращения Raspberry Pi в узел Эфириума рекомендуется следующее оборудование:

  • Плата Raspberry 4 (модель B 8 ГБ), Odroid M1 или Rock 5B (8 ГБ/16 ГБ ОЗУ)
  • Карта MicroSD (минимум 16 ГБ, класс 10)
  • SSD-диск USB 3.0 объемом не менее 2 ТБ или SSD с переходником USB-SATA.
  • Блок питания
  • Кабель Ethernet
  • Переадресация портов (дополнительную информацию см. в разделе о клиентах)
  • Корпус с радиатором и вентилятором
  • USB-клавиатура, монитор и кабель HDMI (micro-HDMI) (необязательно)

Зачем запускать Эфириум на ARM?

Платы ARM — это очень доступные, гибкие и компактные компьютеры. Они отлично подходят для запуска узлов Эфириума, поскольку их можно купить недорого, настроить так, чтобы все их ресурсы были сосредоточены только на узле (что делает их эффективными), они потребляют мало энергии и имеют небольшие физические размеры, поэтому могут незаметно разместиться в любом доме. Кроме того, развернуть узлы очень просто, так как карту MicroSD для Raspberry Pi можно просто прошить готовым образом, без необходимости скачивать или собирать программное обеспечение.

Как это работает?

Карта памяти Raspberry Pi прошивается готовым образом. Этот образ содержит все необходимое для запуска узла Эфириума. С прошитой картой пользователю остается только включить Raspberry Pi. Все процессы, необходимые для работы узла, запускаются автоматически. Это работает благодаря тому, что на карте памяти находится операционная система (ОС) на базе Linux, поверх которой автоматически запускаются процессы системного уровня, превращающие устройство в узел Эфириума.

Эфириум нельзя запустить с использованием популярной ОС Linux для Raspberry Pi «Raspbian», поскольку Raspbian по-прежнему использует 32-битную архитектуру, что приводит к проблемам с памятью у пользователей Эфириума, а клиенты консенсуса не поддерживают 32-битные бинарные файлы. Чтобы решить эту проблему, команда Ethereum on Arm перешла на нативную 64-битную ОС под названием «Armbian».

Образы берут на себя все необходимые шаги: от настройки среды и форматирования SSD-диска до установки и запуска программного обеспечения Эфириума, а также запуска синхронизации блокчейна.

Примечание о клиентах исполнения и консенсуса

Образ Ethereum on Arm включает предварительно собранные клиенты исполнения и консенсуса в виде сервисов. Для работы узла Эфириума необходимо, чтобы оба клиента были синхронизированы и запущены. От вас требуется только скачать и прошить образ, а затем запустить сервисы. В образ предварительно загружены следующие клиенты исполнения:

  • Go Ethereum (Geth)
  • Незермайнд
  • Бесу

и следующие клиенты консенсуса:

  • Лайтхаус
  • Нимбус
  • Призм
  • Теку

Вам следует выбрать по одному клиенту каждого типа для запуска — все клиенты исполнения совместимы со всеми клиентами консенсуса. Если вы не выберете клиента явно, узел вернется к настройкам по умолчанию — Go Ethereum (Geth) и Лайтхаус — и запустит их автоматически при включении платы. Вы должны открыть порт 30303 на вашем маршрутизаторе, чтобы Geth мог находить пиры и подключаться к ним.

Скачивание образа

Образ Эфириума для Raspberry Pi 4 — это образ формата «plug and play» (включай и работай), который автоматически устанавливает и настраивает как клиент исполнения, так и клиент консенсуса, конфигурируя их для взаимодействия друг с другом и подключения к сети Эфириум. Все, что нужно сделать пользователю, — это запустить их процессы с помощью простой команды.

Скачайте образ для Raspberry Pi с сайта Ethereum on Arm (opens in a new tab) и проверьте хеш SHA-256:

# Из директории, содержащей скачанный образ
shasum -a 256 ethonarm_22.04.00.img.zip
# Хеш должен вывести: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f

Обратите внимание, что образы для плат Rock 5B и Odroid M1 доступны на странице загрузок (opens in a new tab) Ethereum-on-Arm.

Прошивка MicroSD

Карту MicroSD, которая будет использоваться для Raspberry Pi, сначала следует вставить в настольный компьютер или ноутбук, чтобы ее можно было прошить. Затем следующие команды терминала прошьют скачанный образ на SD-карту:

# проверьте имя карты MicroSD
sudo fdisk -l

>> sdxxx

Очень важно правильно указать имя, поскольку следующая команда включает dd, что полностью стирает существующее содержимое карты перед записью на нее образа. Чтобы продолжить, перейдите в каталог, содержащий заархивированный образ:

# распакуйте и запишите образ
unzip ethonarm_22.04.00.img.zip
sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/<sdxx> conv=fdatasync status=progress

Теперь карта прошита, и ее можно вставить в Raspberry Pi.

Запуск узла

Вставив SD-карту в Raspberry Pi, подключите кабель Ethernet и SSD, а затем включите питание. ОС загрузится и автоматически начнет выполнять предварительно настроенные задачи, которые превращают Raspberry Pi в узел Эфириума, включая установку и сборку клиентского программного обеспечения. Вероятно, это займет 10–15 минут.

Как только все будет установлено и настроено, войдите в устройство через SSH-соединение или используя терминал напрямую, если к плате подключены монитор и клавиатура. Используйте аккаунт ethereum для входа, так как он имеет права, необходимые для запуска узла.

User: ethereum
Password: ethereum

Клиент исполнения по умолчанию, Geth, запустится автоматически. Вы можете подтвердить это, проверив логи с помощью следующей команды терминала:

sudo journalctl -u geth -f

Клиент консенсуса необходимо запускать явно. Для этого сначала откройте порт 9000 на вашем маршрутизаторе, чтобы Лайтхаус мог находить пиры и подключаться к ним. Затем включите и запустите сервис Лайтхаус:

sudo systemctl enable lighthouse-beacon
sudo systemctl start lighthouse-beacon

Проверьте работу клиента с помощью логов:

sudo journalctl -u lighthouse-beacon

Обратите внимание, что клиент консенсуса синхронизируется за несколько минут, поскольку он использует синхронизацию по контрольной точке (checkpoint sync). Клиенту исполнения потребуется больше времени — возможно, несколько часов, и он не запустится до тех пор, пока клиент консенсуса не завершит синхронизацию (это связано с тем, что клиенту исполнения нужна цель для синхронизации, которую предоставляет синхронизированный клиент консенсуса).

Когда сервисы Geth и Лайтхаус запущены и синхронизированы, ваш Raspberry Pi становится узлом Эфириума! Чаще всего взаимодействие с сетью Эфириум происходит с помощью консоли JavaScript Geth, которую можно подключить к клиенту Geth по порту 8545. Также можно отправлять команды в формате JSON-объектов с помощью инструмента запросов, такого как Curl. Подробнее см. в документации Geth (opens in a new tab).

Geth предварительно настроен на отправку метрик на панель управления Grafana, которую можно просматривать в браузере. Более продвинутые пользователи могут захотеть использовать эту функцию для мониторинга состояния своего узла, перейдя по адресу ipaddress:3000 и передав user: admin и passwd: ethereum.

Валидаторы

К клиенту консенсуса также можно дополнительно добавить валидатор. Программное обеспечение валидатора позволяет вашему узлу активно участвовать в консенсусе и обеспечивает криптоэкономическую безопасность сети. За эту работу вы получаете вознаграждение в ETH. Чтобы запустить валидатор, у вас сначала должно быть 32 ETH, которые необходимо внести в депозитный контракт. Депозит можно внести, следуя пошаговому руководству на Launchpad (opens in a new tab). Сделайте это на настольном компьютере/ноутбуке, но не генерируйте ключи — это можно сделать прямо на Raspberry Pi.

Откройте терминал на Raspberry Pi и выполните следующую команду для генерации ключей депозита:

sudo apt-get update
sudo apt-get install staking-deposit-cli
cd && deposit new-mnemonic --num_validators 1

(Или скачайте staking-deposit-cli (opens in a new tab) для запуска на изолированном от сети компьютере и выполните команду deposit new-mnemnonic)

Храните мнемоническую фразу в надежном месте! Приведенная выше команда сгенерировала два файла в хранилище ключей узла: ключи валидатора и файл данных депозита. Данные депозита необходимо загрузить в Launchpad, поэтому их нужно скопировать с Raspberry Pi на настольный компьютер/ноутбук. Это можно сделать с помощью SSH-соединения или любого другого метода копирования и вставки.

Как только файл данных депозита станет доступен на компьютере, на котором запущен Launchpad, его можно перетащить на + на экране Launchpad. Следуйте инструкциям на экране, чтобы отправить транзакцию в депозитный контракт.

Вернувшись к Raspberry Pi, можно запустить валидатор. Для этого требуется импортировать ключи валидатора, установить адрес для сбора вознаграждений, а затем запустить предварительно настроенный процесс валидатора. Ниже приведен пример для клиента Лайтхаус — инструкции для других клиентов консенсуса доступны в документации Ethereum on Arm (opens in a new tab):

# импортируйте ключи валидатора
lighthouse account validator import --directory=/home/ethereum/validator_keys

# установите адрес вознаграждения
sudo sed -i 's/<ETH_ADDRESS>' /etc/ethereum/lighthouse-validator.conf

# запустите валидатор
sudo systemctl start lighthouse-validator

Поздравляем, теперь у вас есть полноценный узел Эфириума и валидатор, работающие на Raspberry Pi!

Дополнительная информация

На этой странице представлен обзор того, как настроить узел Geth-Лайтхаус и валидатор с использованием Raspberry Pi. Более подробные инструкции доступны на сайте Ethereum-on-Arm (opens in a new tab).

Будем рады отзывам

Мы знаем, что у Raspberry Pi огромная база пользователей, которая может оказать очень положительное влияние на здоровье сети Эфириум. Пожалуйста, изучите детали в этом руководстве, попробуйте запустить узел в тестовых сетях, загляните на GitHub проекта Ethereum on Arm, оставляйте отзывы, создавайте задачи (issues) и запросы на включение (pull requests), а также помогайте развивать технологию и документацию!

Ссылки

  1. https://ubuntu.com/download/raspberry-pi (opens in a new tab)
  2. https://wikipedia.org/wiki/Port_forwarding (opens in a new tab)
  3. https://prometheus.io (opens in a new tab)
  4. https://grafana.com (opens in a new tab)
  5. https://forum.armbian.com/topic/5565-zram-vs-swap/ (opens in a new tab)
  6. https://geth.ethereum.org (opens in a new tab)
  7. https://nethermind.io (opens in a new tab)
  8. https://www.hyperledger.org/projects/besu (opens in a new tab)
  9. https://github.com/prysmaticlabs/prysm (opens in a new tab)
  10. https://lighthouse.sigmaprime.io (opens in a new tab)
  11. https://docs.ethswarm.org/ (opens in a new tab)
  12. https://raiden.network (opens in a new tab)
  13. https://ipfs.io (opens in a new tab)
  14. https://status.im (opens in a new tab)
  15. https://vipnode.org (opens in a new tab)