ПЕРСПЕКТИВА РОЗРОБНИКА | Як стати соло-валідатором Ethereum

Задумайтеся на мить,

Блокчейн — це просто велика єдина база даних, якою володіє ніхто, але до якої може писати будь-хто, і все, що в неї записано, не можна видалити. Щоб мати можливість писати в цю базу даних, потрібно мати її копію на своєму комп’ютері.

Отже, ви нарешті зрозуміли, наскільки вигідною є інвестиція у ставку валідатора Ethereum, і вирішили спробувати, скільки можете заробити.

Вітаю, по-перше! Це велике завдання, і я від імені спільноти Ethereum дякую вам (з будь-якої причини — за отримання блокових нагород, за децентралізацію Ethereum тощо) за вашу сміливу ініціативу.

У тому ж дусі децентралізації ми розглянемо, як стати соло-валідатором або, як кажуть, соло-ставкою на Ethereum.

Ми не будемо розглядати інші способи стейкінгу, такі як ліквідний стейкінг, стейкінг як сервіс або подібне. Адже ви вже вирішили бути валідатором, чому б не зробити це у справжньому кіперпанковому стилі, га?

Спершу ознайомимося з деякими словами:

Ethereum — це блокчейн на основі Proof of Stake з моменту “The Merge”, що відбувся 15 вересня 2022 року, і перевів Ethereum з Proof-of-Work (PoW) у Proof-of-Stake (PoS).

Що це означає — спосіб досягнення консенсусу в Ethereum повністю змінився.

Пам’ятаєте, як ми казали, що блокчейн — це просто велика одна база даних на купі комп’ютерів? Тож, стан цієї бази даних має бути відомий усім комп’ютерам у мережі постійно. Комп’ютери (ноді), що беруть участь у мережі, мають погодитися щодо поточного стану бази даних, тобто досягти консенсусу!

В Ethereum ноди не потрібно розв’язувати складні математичні задачі для досягнення консенсусу, як у PoW, а натомість вони блокують Ether наперед, фактично кажучи:

“Гей, я готовий бути валідатором, який додаватиме блоки та перевірятиме транзакції, і якщо я погано себе поведу під час виконання цієї задачі, ви можете забрати мій Ether, який я поставив наперед (мій стейк), як покарання за погану поведінку. Якщо я поводжуся правильно, ви нагороджуєте мене новоствореним Ether!”

Коли понад дві третини валідаторів погоджуються з поточним станом бази даних, стан блокчейну вважається завершеним!

Чому саме дві третини?

Уявіть, що ми чекатимемо, поки всі валідатори (на момент написання — 1 031 682 активних валідаторів) у мережі погодяться щодо стану блокчейну? Швидкість завершення блокчейну буде дуже повільною, і Ethereum стане практично невикористовним. Швидкість завершення залежить від найповільнішої ноди, а оскільки Ethereum максимально децентралізований (може працювати на звичайному споживчому обладнанні, яке зазвичай повільніше за великі інституційні сервери), потрібно враховувати найповільнішу ноду. Тому дві третини — це цілком розумна кількість для очікування, чи не так? 😂😂😂

Модель безпеки Ethereum тепер можна підсумувати так: “Люди — раціональні істоти, які прагнуть отримати прибуток і прийматимуть раціональні рішення для його реалізації. Тому вони не погано себе поводитимуть, бо якщо погано — їхній Ether, який вони поставили наперед (їхній стейк), буде знижено!”

Чи не так, що це — досягнення безпеки через капіталізм?

Спершу,

Що таке нода Ethereum?

Нода Ethereum — це комп’ютер, що запускає програмне забезпечення Ethereum, зване клієнтом Ethereum. Ось і все. Повірте, це справді так. Це максимально просто: без складних слів, без зайвого. Це і є нода Ethereum.

Ці ноди формують блокчейн Ethereum — купу комп’ютерів, що працюють на схожому програмному забезпеченні і можуть спілкуватися між собою.

Кожен може запустити ноду Ethereum, але особисто для себе це не має фінансової вигоди. Не зрозумійте неправильно, запуск ноди має свої переваги, наприклад:

  1. Не потрібно довіряти іншим нодам у мережі, бо ви можете самі перевіряти всі транзакційні дані — справжня кіперпанкова природа “Не довіряй, перевіряй!”
  2. Ви можете використовувати децентралізовані додатки (dApps) більш безпечно і приватно, бо не потрібно розкривати свої адреси гаманців і баланси посередникам-невідомим нодам.
  3. Ви можете підключити свій гаманець Ethereum безпосередньо до RPC-ендпоінту вашої ноди. Це дає вам єдиний доступ і пріоритет у включенні транзакцій, без конкуренції з іншими через публічні RPC.
  4. Ви забезпечуєте дотримання правил консенсусу, тому не можете бути обмануті і приймати блоки, що порушують правила, у випадку чорного лебедя, коли всі ноди вирішать зійтися у змові. У такому випадку ноди можуть обрати чесну ланцюг і відновити справедливість.
  5. Більше нод — більш різноманітна і стійка мережа, що ускладнює її злом або цензуру транзакцій.
  6. Повні ноди забезпечують доступ до даних блокчейну для легких клієнтів, що залежать від них (Light Clients). Це допомагає користувачам безпечно і децентралізовано взаємодіяти з Ethereum без необхідності синхронізувати весь блокчейн, відкриваючи ширший спектр застосувань.

Створюючи спеціальний ‘магічний’ підписний ключ і ставлячи 32 ETH у смарт-контракт, що зв’язаний із цим ключем, ви перетворюєте свою ноду Ethereum у валідатора.

Валідатори — це активовані ноди, що обробляють транзакції користувачів і фіксують їх у камінь (тобто у фіналізацію).

Кожна транзакція голосується всіма валідаторами (підписуються атестації) у мережі Ethereum і підтверджується їхнім ETH, поставленим наперед.

Оскільки валідатори обробляють і підтверджують транзакції користувачів, вони отримують нагороди за хорошу роботу і штрафи за погану поведінку. Якщо валідатор виявиться недобросовісним, зловмисним або грубо недбалим, його стейк може бути знижено до повної суми, і його вигнано з мережі.

Це стимулює валідаторів залишатися чесними і чесно виконувати свої обов’язки.

Як же стати соло-ставкою на Ethereum?

Вам потрібно поставити 32 ETH, щоб стати валідатором Ethereum. Це еквівалентно приблизно Ksh. 13 998 370,65 (на момент написання), де 1 ETH = Ksh. 437 449,08 — скільки зараз 1 ETH, коли ви читаєте?

Як вони взагалі дійшли до вимоги 32 ETH? Це закодовано у програмному забезпеченні клієнтів Ethereum, яке ви запускаєте.

Після цього потрібно запустити спеціальне клієнтське програмне забезпечення, наприклад:

  1. Prysm (https://prysmaticlabs.com/))
  2. Lighthouse (https://lighthouse-book.sigmaprime.io/))
  3. Teku (https://consensys.io/teku))
  4. Nimbus (https://nimbus.team/))
  5. Lodestar (https://lodestar.chainsafe.io/))

Це програмне забезпечення називається “Consensus Layer software”, бо саме воно досягає консенсусу в Ethereum — визначає стан блокчейну.

Тепер, коли ви знаєте, яке клієнтське програмне забезпечення запускати і маєте 32 ETH, ви готові отримувати солодкі блокові нагороди, так? Ну, так, але, як завжди, у деталях криється підступ. Давайте подивимося, наскільки це може стати дуже складним завданням.

Соло-ставка

Соло-ставка означає повністю запускати свою ноду і отримувати всі нагороди за блоки без їхнього поділу з іншими.

Мінімальні апаратні вимоги для соло-ставки:

  1. CPU: чотириядерний
  2. RAM: 32 ГБ
  3. Зберігання: 2 ТБ NVME SSD, >500 IOPS для читання, >1700 IOPS для запису, без QLC (можна розглянути 4 ТБ NVME SSD, >5000 IOPS для читання, >1700 IOPS для запису, без QLC для безстресової роботи)
  4. Мережа (перевірте у вашого провайдера):
    1. Об’єм: безліміт або щонайменше 2 ТБ на місяць
    2. Швидкість: щонайменше 500 Мб/с спільно — ваш валідаторний вузол потребує щонайменше 10 Мб/с виділеної швидкості інтернету
    3. IP-адреса: статична, якщо можливо
  5. Електропостачання: безперебійне джерело живлення (UPS)

Спершу здається, що апаратні вимоги дуже високі, але ви бачили вимоги Solana?

Пам’ятайте нашу ідею:

“Блокчейн — це просто велика єдина база даних, якою володіє ніхто, але до якої може писати будь-хто, і все, що в неї записано, не можна видалити. Щоб писати в цю базу, потрібно мати її копію на своєму комп’ютері.”

Давайте подивимося, як кожен компонент апаратури впливає на продуктивність:

Компонент Вплив на продуктивність
CPU – Впливає на швидкість виконання блоків (ліміт 4с)
– Може пропустити атестації (голоси) і пропозиції блоків, якщо буде занадто повільним
RAM – Сервери можуть аварійно завершити роботу або перезавантажитися, якщо закінчиться пам’ять, що призведе до втрати даних. Це може спричинити пошкодження бази даних і, у найгіршому випадку, потребу повторної синхронізації ноди з нуля, пропустивши атестації на 2-3 дні.
– З ростом активності мережі (більше адрес, смарт-контрактів, транзакцій) зростає й вимога до пам’яті ноди для підтримки стану ланцюга і поширення транзакцій.
Зберігання – Швидкість читання/запису (IOPS) — головний вузол у швидкості виконання блоків
Мережа – Впливає на затримку при отриманні/відправленні блоків, що впливає на швидкість виконання (ліміт 4с)
– Статична IP-адреса покращує виявлення нодами і запобігає проблемам із низькою кількістю пірів
– Деякі провайдери блокують переадресацію портів (для віддаленого доступу), якщо IP-адреса не статична
Електропостачання – Раптові відключення, наприклад, через блискавку або збої, спричинять некоректне завершення роботи ноди, що може призвести до втрати даних і пошкодження бази даних, а у найгіршому випадку — до повторної синхронізації з пропущеними атестаціями на 2-3 дні.

Пам’ятаєте, ми казали, що потрібно запускати клієнт консенсусного шару, наприклад Lighthouse, а також клієнт виконавчого шару?

Що таке клієнт виконавчого шару? Радий, що запитали…

Клієнт виконавчого шару в Ethereum — це програмне забезпечення, яке виконує смарт-контракти і транзакції. Тут запускаються ваші улюблені dApps, наприклад Aave, Uniswap і та ваша улюблена мем-коіна, яка чекає на зірковий зліт. Саме цей виконавчий шар формує Ethereum Virtual Machine (EVM).

Приклади клієнтів виконавчого шару:

  • geth
  • reth
  • nethermind
  • besu
  • erigon

Примітка: покращуйте стійкість Ethereum, використовуючи міноритарний виконавчий клієнт. Що станеться, якщо трапиться чорний лебідь і geth, що має приблизно 55% ринку (на момент написання), — тобто більшість виконавчих клієнтів Ethereum — матиме критичну помилку? Чи означає це, що Ethereum зламається?

Обробка блоків виглядає так:

  1. Виконати смарт-контракти на EVM. Це можливо, бо валідатор запускає виконавчий клієнт, наприклад reth.
  2. Це змінює стан блокчейну.
  3. Ці зміни потрібно поширити по всій ланцюгу — пам’ятаєте нашу одну велику базу даних — щоб досягти консенсусу і щоб усі ноди погодилися щодо стану ланцюга на цей момент. Це означає, що виконавчий шар має якось спілкуватися з консенсусним шаром.

Розглянемо приклад налаштування reth (виконавчого клієнта) з Lighthouse (клієнтом консенсусу).

Наступні кроки передбачають, що ви вже маєте базове розуміння роботи з Linux, включно з командним рядком, який ви скопіювали з StackOverflow, не розуміючи точно, що він робить, але він працює.

ls -al | grep | xxd | echo -n

О, ви не зрозуміли нічого з того, що я щойно написав?

Якщо ls -al | grep | xxd | echo -n здається вам китайською, настав час освіжити свої знання з команд Linux. Не потрібно бути гуру, як я (так, я використовую Arch), але хоча б навчіться відрізняти cd від rm -rf /!

Ми працюватимемо на машині з Ubuntu.

Спершу потрібно створити JSON Web Token (JWT), що дозволить виконавчому і консенсусному клієнтам спілкуватися.

Запустіть ці команди по одній, щоб створити папку jwtsecret і згенерувати файл jwt.hex у ній:

sudo mkdir -p /var/lib/jwtsecret

openssl rand -hex 32 | sudo tee /var/lib/jwtsecret/jwt.hex > /dev/null

Після цього конфігураційні файли клієнтів будуть вказувати на цей JWT-файл (jwt.hex).

Завантажте reth і налаштуйте сервіс:

Завантажте останню версію reth тут (https://github.com/paradigmxyz/reth/releases)) та її цифровий підпис (.asc) для перевірки цілісності файлу.

curl -LO https://github.com/paradigmxyz/reth/releases/download/v1.0.0/reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz

curl -LO https://github.com/paradigmxyz/reth/releases/download/v1.0.0/reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz.asc

Перевірте контрольну суму:

gpg --keyserver keyserver.ubuntu.com --recv-keys 50FB7CC55B2E8AFA59FE03B7AA5ED56A7FBF253E

gpg --verify reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

Очікуваний результат: підтвердження підпису та цілісності файлу.

Якщо все гаразд, розпакуйте файли і перемістіть їх у /usr/local/bin:

tar xvf reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

sudo cp reth /usr/local/bin

rm -r reth reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

Створіть користувача reth без доступу до сервера:

sudo useradd --no-create-home --shell /bin/false reth

Створіть папку для зберігання даних і призначте власника:

sudo mkdir -p /var/lib/reth

sudo chown -R reth:reth /var/lib/reth

Створіть systemd сервіс для reth:

sudo vi /etc/systemd/system/reth.service

Вставте конфігурацію:

[Unit] Description=Reth Execution Client (Holesky) After=network.target Wants=network.target

[Service] User=reth Group=reth Type=simple Restart=always RestartSec=5 ExecStart=/usr/local/bin/reth node
–chain holesky
–datadir=/var/lib/reth
–log.file.directory=/var/lib/reth/logs
–authrpc.jwtsecret=/var/lib/jwtsecret/jwt.hex
–full
–port 30304
–http
–http.api eth,web3,net,txpool,debug,trace
–http.addr <internal_ip_address>
–http.port 8547
–ws
–ws.addr <internal_ip_address>
–ws.port 8548
–metrics 127.0.0.1:6060

[Install] WantedBy=default.target

Збережіть і активуйте сервіс:

sudo systemctl daemon-reload sudo systemctl start reth.service sudo systemctl status reth.service

Перевірте статус — має бути “active (running)”. Для моніторингу логів:

sudo apt install ccze -y sudo journalctl -fu reth -o cat | ccze -A

Якщо все працює, увімкніть автоматичний запуск при перезавантаженні:

sudo systemctl enable reth.service

Наступний крок — налаштування клієнта Lighthouse для консенсусу. Завантажте і перевірте його так само, як reth.

Після налаштування запустіть і перевірте статус:

sudo systemctl daemon-reload sudo systemctl start lighthousebeacon.service sudo systemctl status lighthousebeacon.service

Переконайтеся, що він активний і працює. Потім увімкніть автоматичний запуск:

sudo systemctl enable lighthousebeacon.service

Перевірте коректність роботи через лог:

sudo journalctl -fu lighthousebeacon -o cat | ccze -A


Генерація ключів валідатора

Це криптографічні ключі, що використовуються для підпису і голосування. Є два основних типи:

  1. Validator Key (підписний ключ): для підпису атестацій і пропозицій блоків.
  2. Withdrawal Key: для управління і зняття стейку.

Рекомендується генерувати їх на ізольованій машині (air-gapped), наприклад, на Raspberry Pi або з використанням Live OS, щоб забезпечити максимальну безпеку.

Завантажте файл для генерації ключів з перевіркою контрольної суми:

curl -LO https://github.com/ethereum/staking-deposit-cli/releases) sha256sum -c <checksum_file>

Після перевірки розпакуйте і згенеруйте ключі командою:

./deposit new-mnemonic --num_validators <кількість> --chain holesky --eth1_withdrawal_address <ваша_адреса>

Збережіть мнемонічний фрагмент — ніколи не зберігайте його онлайн! Запишіть на папір і зберігайте у безпечному місці.

Після генерації з’являться файли keystore і deposit data. Збережіть їх на USB і видаліть з комп’ютера.


Додавання ключів до ноди

Підключіть USB до ноди, змонтуйте його і скопіюйте keystore у домашню папку ноди.

Створіть файл паролю і збережіть його.


Внесення депозиту

Переконайтеся, що ви використовуєте офіційний Launchpad або тестовий аналог для тестнету.

Відправте 32 ETH на адресу депозитного контракту (на тестнеті — інша адреса).

Після підтвердження транзакції ви станете валідатором і почнете отримувати нагороди.


Вихід із валідатора

Щоб добровільно вийти, використовуйте команду відповідного клієнта (наприклад Lighthouse):

lighthouse account validator exit --keystore <шлях> --beacon-node <адреса>

Після підтвердження ваш валідатор буде виключений, і ви зможете отримати назад стейк і нагороди.


Це був довгий гід! Тепер ви знаєте, як стати валідатором Ethereum у соло-режимі. Бажаю успіхів і децентралізації!

ETH2,6%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити