Eth2 staking na Raspberry Pi 4 (experiment)

Leželo mi tu jedno RPi 4, což je velmi levný mikro počítač na bázi ARM procesoru velikosti kreditní karty, který je v současné generaci už relativně výkonný. Tak mě napadlo zkusit na tom rozběhat Ethereum 2.0 beacon chain node a zda bude reálné využít to i jako validační node (staking).

Hardware

  • Raspberry Pi 4B - 4GB RAM (specifikace)
  • 32 GB UHS-1 micro-sd karta SanDisk
  • žádná krabička, heatsink, nebo chladič - nic
  • připojení na sít mám přes WiFi
  • a to je vše :slight_smile: z RPi mi jde jediný kabel a to je napájecí USB-C

Eth2 klient - Lighthouse

Jako Eth2 klienta jsem zvolil Lighthouse, který je psaný v jazyce Rust a který se na podporu ARM procesorů soustředí. Kompilace přímo na RPi by trvala dlouho, proto je dobře že Lighthouse dává k dispozici binární soubory přímo pro ARM, které jen stačí stáhnout a spustit. Instalaci jsem provedl přímo podle návodu pro RPi v dokumentaci Lighthouse - jako OS jsem použil doporučované Ubuntu Ubuntu 20.04 LTS. Jen místo kompilace Lighthouse jsem stáhnul přímo binárky.

Testnet - Pyrmont

Aktuálně jsem se rozhodl pro test na úplně čerstvém testnetu Pyrmont, který má co nejvíc napodobovat prostředí jaké bude na ostré síti.

Depozit kontrakt - vklad ETH

Předtím, než můžete rozject validátora musíte vložit 32 GöETH (Eth2 testnet depozity jsou spojené s Goerli Eth1 testnetem) do Eth2 deposit kontraktu na stránce pyrmont.launchpad.ethereum.org (testovací GöETH jsem získal z tohoto faucetu). Procházka průvodcem na Launchpad webu je uděláno skvěle a všechno hezky funguje. Tady je můj validátor.

Ve zkratce to funguje tak, že si stáhnete jednoduchý nástroj eth2-deposit-cli (napsaný v Pythonu), pomocí kterého si lokálně vygenerujete klíče, ty nahrajete na Launchpad a poté jen odsouhlasíte web3 transakci na převod ETH, podobně jako u každé jiné DeFi aplikace. Ty klíče co jste si vytvořili lokálně pak jen importovat do Lighthouse.

Zprovoznění Beacon chain klienta

Tak, deposit máme za sebou - teď zprovoznit Eth2 klienta. Pro provoz Eth2 validátora potřebujete připojení na Eth1 síť (pro monitoring depozitů), to se dá udělat buď tak že si ho zprovozníte sami (což je jasně všude doporučováno) a nebo využijete nějakou externí full-node. Jelikož neočekávám že RPi by zvládlo i Eth1 klienta, tak jsem tedy použil cloudovou službu Alchemy (alternativa všeobecně známé Infury), kde jsem si založit účet zdarma a vygeneroval endpoint pro Eth1 Goerli testnet.

Beacon chain node se u Lighthouse spouští pomocí příkazu lighthouse bn (+ parametry). Po spuštění se klient připojí do sítě a na P2P bázi začne synchronizovat blockchain. Jelikož Pyrmont testnet běží jen pár hodin, tak synchronizace byla velmi rychlá - předtím jsem ale zkoušel synchronizovat již několik měsíců fungující testnet Medalla a to bylo na hodiny a dny, takže počítejte s tím že synchronizace nějaký ten čas zabere (je možné blockchain synchronizovat na výkonnějším stroji a data pak překopírovat). Rychlost synchronizace byla cca 1-2 sloty za sekundu a všechny jádra CPU byly vytížené na maximum.

Nyní už mám beacon chain synchronizovaný a dostávám aktuální bloky. Vyhodnocení toho, jak moc je to náročné si nechám na později až to nějaký čas poběží. Až poběží, napíšu více.

Zprovoznění validátora

Validátor se spouští příkazem lighthouse vc. Aktivace validátora není hned po depozitu. Musíte počkat minimálně cca 8 hodin, než Beacon chain váš depozit zaeviduje a pak ještě nějaký čas, podle toho kolik je validátoru ve frontě. Já zatím pořád čekám na aktivaci, takže validátor mi ještě neběží.

Monitoring

Skvělá věc je, že Lighthouse má v sobě zabudované monitorovací statistiky (Prometheus endpoint), které se aktivují přepínačem --metrics, takže je velmi lehké zprovoznit si Dashboard, kde můžete sledovat hlavní indikátory. Dashboard je založený na SW Grafana a je možné ho zprovoznit jednoduše pomocí Dockeru - vše najdete v repozitáři lighthouse-metrics.

A co dál?

Zatím jsem tedy jen zprovoznil Beacon chain nodu a validátor mi pořád čeká na aktivaci. Budu v tomhle threadu postupně informovat o tom jak se to vyvijí a pokusím se přinést i nějaké statistiky či čísla. Zatím jsem z toho takový rozpačitý - RPi je sice už hodně výkonné, ale bez chladiče mi často zatuhlo - uvidíme jak se to projeví v nějakém delším horizontu. Stay tuned.

1 Like

Tady jsem našel zajímavý přístup - na RPi provozovat jen validátora. Hlavní výhodou kterou autor uvádí je lepší ochrana validačních klíčů, díky tomu že budou odděleně na RPi. Validátor potřebuje jen připojení k beacon node a tak nemusí mít přímé připojení na internet. To dává smysl - pokud budu validovat na mainnetu, tak to udělám asi takto.