Запуск вузла Етеріуму на Raspberry Pi 4
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 містить попередньо зібрані клієнти виконання та консенсусу у вигляді сервісів. Для роботи вузла Етеріуму потрібно, щоб обидва клієнти були синхронізовані та запущені. Вам потрібно лише завантажити та прошити образ, а потім запустити сервіси. В образ попередньо завантажені такі клієнти виконання:
- Geth
- Незермайнд
- Бесу
та такі клієнти консенсусу:
- Лайтхаус
- Німбус
- Призм
- Теку
Вам слід вибрати по одному з кожного типу для запуску — усі клієнти виконання сумісні з усіма клієнтами консенсусу. Якщо ви не виберете клієнт явно, вузол повернеться до налаштувань за замовчуванням — Geth та Лайтхаус — і запустить їх автоматично під час увімкнення плати. Ви повинні відкрити порт 30303 на своєму маршрутизаторі, щоб Geth міг знаходити пірів і підключатися до них.
Завантаження образу
Образ Етеріуму для Raspberry Pi 4 — це образ типу «plug and play» (підключи і працюй), який автоматично встановлює та налаштовує як клієнт виконання, так і клієнт консенсусу, конфігуруючи їх для взаємодії один з одним та підключення до мережі Етеріум. Усе, що потрібно зробити користувачеві, — це запустити їхні процеси за допомогою простої команди.
Завантажте образ для Raspberry Pi з Ethereum on Arm (opens in a new tab) та перевірте хеш SHA256:
# З директорії, що містить завантажений образ
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) для запуску на ізольованій від мережі машині (airgapped) та виконайте команду 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 і допомагайте вдосконалювати технологію та документацію!
Посилання
- https://ubuntu.com/download/raspberry-pi (opens in a new tab)
- https://wikipedia.org/wiki/Port_forwarding (opens in a new tab)
- https://prometheus.io (opens in a new tab)
- https://grafana.com (opens in a new tab)
- https://forum.armbian.com/topic/5565-zram-vs-swap/ (opens in a new tab)
- https://geth.ethereum.org (opens in a new tab)
- https://nethermind.io (opens in a new tab)
- https://www.hyperledger.org/projects/besu (opens in a new tab)
- https://github.com/prysmaticlabs/prysm (opens in a new tab)
- https://lighthouse.sigmaprime.io (opens in a new tab)
- https://docs.ethswarm.org/ (opens in a new tab)
- https://raiden.network (opens in a new tab)
- https://ipfs.io (opens in a new tab)
- https://status.im (opens in a new tab)
- https://vipnode.org (opens in a new tab)