Hogyan figyelemmel kísérheti az Eth2 Validator-t és elemezheti a P&L-t

blog 1NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressHírlevelek

Iratkozzon fel hírlevelünkre.

Email cím

Tiszteletben tartjuk a magánéletét

HomeBlogDevelopers

Hogyan figyelemmel kísérhetjük az Eth2-hitelesítőt és elemezhetjük a P-t&L

írta Coogan Brennan 2021. január 15-én. 2021. január 15-én

Utazás hitelesítővé válásként az Ethereum 2 0 3. részében

Ha Ön még ismeretlen ebben a sorozatban a saját Eth2-hitelesítőjének futtatásával kapcsolatban, feltétlenül nézze meg az 1. és a 2. részt. Mindannyian ellenőrizni kell Ben Edgington Eth2.News hírlevél fvagy lényeges frissítések, hibajavítások és hírek a készülő ütemtervről. Eth2 Tudásbázisunk hasznos, ha több háttérre van szüksége a kulcsfontosságú kifejezésekről, fázisokról és a ConsenSys Eth2 termékeiről.

Bevezetés 

Másfél hónap telt el azóta, hogy elindult az Ethereum 2.0 Beacon láncgenezise. Már 2 515 170 ETH-t vontak be (körülbelül 2,9 milliárd dollár a jelenlegi piaci árfolyamon) 61 561 egyedi validátorral, és további 16 687 várakozott a sorban. A tét iránti óriási érdeklődés ellenére valójában meglehetősen eseménytelen másfél hónap telt el: Nem voltak nagyobb zavarok, csak néhány vágás és validátor részvétele a 98. percentilisben legtöbbször. Itt az ideje, hogy levegőt vegyen, hogy számba vegye az eddigieket. 

Ebben a blogbejegyzésben az Eth2 validátorának nyomon követésével és pénzügyi elemzésével foglalkozom. Áttekintést nyújtok a Teku metrikák eléréséről, a Beaconcha.in értesítések beállításáról és a csomópont lekérdezéséről. Megosztom a jelenlegi P-t is&L bontás. A sorozat utolsó részében megvitatom, hogyan lehet biztonságosan és (remélhetőleg) sikeresen migrálni egy Teku csomópontot egyik szerverről a másikra.

Monitoring

Ebben a részben bemutatom, hogyan olvashatja el az érvényesítő csomópont mutatóit. Az Ethereum 2.0 érvényesítő futtatása az elosztott rendszer infrastruktúráját futtatja. Az infrastruktúra fenntartásának döntő része, hogy lássa, mi történik. Szerencsére a Teku egy nagyszerű felügyeleti eszközkészlettel rendelkezik, amely lehetővé teszi az indítási parancs „–metrics-enabled” jelölését, amelyet alább kiemelünk:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –net = mainnet<erős> erős> <erős>–eth1-végpont = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE erős> <erős>–validator-keys = / home / ubuntu / validator_key_info / KEYSTORE-M_123456_789_ABCD.json: /home/ubuntu/validator_key_info/validator_keys/KEYSTORE-M_123456_789_ABCD.txt erős> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled – validátorok-kulcstár-zárolás-engedélyezett = hamis <erős>–adatbázis-elérési út = / var / lib / tekustrong>Kód nyelve: HTML, XML (xml)

Néhány adatot el kell végeznünk, mielőtt elolvashatnánk az adatokat.

Azok számára, akik nem futnak Teku klienst: Először is, miért? Másodszor, megtekintheti az összes ügyfél által biztosított minimális mutatókat Az Ethereum 2.0 specifikációi itt találhatók.

A Prometheus telepítése

Először telepítenünk kell Prométheusz, – nyílt forráskódú megfigyelő program, és – Grafana, egy nyílt forráskódú elemzési és interaktív vizualizációs webalkalmazás. A Prometheus húzza az adatokat, a Grafana pedig megjeleníti azokat.

Az Ubuntu parancssorára töltse le a legújabb stabil Prometheust:

göndör -JLO <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gza>Kód nyelve: HTML, XML (xml)

Tömörítse ki a fájlt így:

tar -zxvf <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">prometheus-2.23.0.linux-amd64.tar.gza>Kód nyelve: HTML, XML (xml)

Mozgassa a bináris fájlt, hogy elérhető legyen a parancssorból:

CD prometheus-2.23.0. Kód nyelve: CSS (css) sudo mv prometheus promtool / usr / local / bin /

Ellenőrizze, hogy helyesen telepítették-e:

prometheus –version promtool –version

Hozzon létre egy prometheus YML konfigurációs fájlt:

sudo nano prometheus.ymlKód nyelve: CSS (css)

Illessze be ezeket a paramétereket a konfigurációs fájlba:

globális: scrape_interval: 15s scrape_configs: – job_name: "Prométheusz" static_configs: – célok: ["helyi gazda: 9090"] – munka megnevezés: "teku-dev" scrape_timeout: 10s metrics_path: / metrika séma: http static_configs: – célok: ["helyi vendéglátó: 8008"] Kód nyelve: PHP (php)

Ez utasítja a Prometheust, hogy tíz másodpercenként kérdezze le a Teku csomópontot a 8008-as porton. Nyomja meg az X parancsot, majd nyomja meg az Y billentyűt a puffer mentéséhez

Most hozzunk létre egy könyvtárat a Prometheus konfigurációs fájlunk elhelyezéséhez:

sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml

Egy másik könyvtárat fogunk létrehozni más Prometheus fájlok számára, és a konzol és a konzol_könyvtárak moduljait áthelyezzük az / etc / prometheus könyvtárba.

sudo mkdir / var / lib / prometheus sudo mv konzolok / console_libraries / / etc / prometheus / Kód nyelve: JavaScript (javascript)

Létrehozunk egy prometheus felhasználót egy systemd szolgáltatás futtatásához, akárcsak a Teku esetében (itt olvashat bővebben arról, hogy a szerepalapú felhasználói hozzáférés hogyan működik a szerverek biztonságának legjobb gyakorlatában), és hozzáférést biztosít a megfelelő fájlokhoz:

sudo useradd –no-create-home –shell / bin / false prometheus sudo chown -R prometheus: prometheus / var / lib / prometheus sudo chown -R prometheus: prometheus / etc / prometheus sudo chown -R prometheus: prometheus / usr / local / bin / Kód nyelve: JavaScript (javascript)

Végül hozzon létre egy systemd szolgáltatást, amely a háttérben futtatható, és ha nem sikerül, indítsa újra magát:

sudo nano /etc/systemd/system/prometheus.service

Ebben a fájlban (amelynek üresnek kell lennie) egy sor parancsot fogunk beírni, amelyeket a systemd a szolgáltatás elindításakor hajthat végre. Másolja a következőket a szövegszerkesztőbe:

[Unit] Description = Prometheus Wants = network-online.target After = network-online.target [Service] Type = simple User = prometheus Group = prometheus Restart = always RestartSec = 5 ExecStart = / usr / local / bin / prometheus \ – -config.file = / etc / prometheus / prometheus.yml \ –storage.tsdb.path = / var / lib / prometheus \ –web.console.templates = / etc / prometheus / consoles \ –web.console. könyvtárak = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Install] WantedBy = multi-user.targetCode nyelv: JavaScript (javascript)

Írja be az X parancsot, majd írja be az „Y” parancsot a módosítások mentéséhez

A frissítéshez újra kell indítanunk a systemctl-t:

sudo systemctl daemon-reload

Indítsa el a szolgáltatást:

sudo systemctl start prometheus

Ellenőrizze, hogy rendben van-e:

sudo systemctl állapot prometheus

Ha hibát észlel, futtasson további részleteket:

sudo journalctl -f -u prometheus.serviceKód nyelve: CSS (css)

A Prometheus szolgáltatást a következő futtatással állíthatja le:

sudo systemctl stop prometheus

Telepítse a Grafanát

A Grafana telepítéséhez a Linux APT csomagkezelőjét fogjuk használni. Ez jó mennyiségű munkát spórol meg nekünk, és megadja azt, amire szükségünk van. Kövessük a Grafana telepítési oldalának lépéseit:

sudo apt-get install -y apt-transport-https sudo apt-get install -y szoftver-tulajdonságok-közös wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Code nyelv: JavaScript (javascript)

Hozzáadjuk a stabil Grafana adattárat a frissítésekhez:

visszhang "deb https://packages.grafana.com/oss/deb stabil fő" | sudo tee -a /etc/apt/sources.list.d/grafana.listKód nyelve: PHP (php)

Ezután futtatjuk az APT-t:

sudo apt-get update sudo apt-get install grafanaCode nyelv: JavaScript (javascript)

A csomag egy systemd szolgáltatást állít be számunkra (beleértve a grafana felhasználót is), ezért csak futtatnunk kell:

sudo szolgáltatás grafana-kiszolgáló indítása sudo szolgáltatás grafana-kiszolgáló állapota sudo update-rc.d grafana-kiszolgáló alapértelmezései Kód nyelve: CSS (css)

SSH-alagút

A Grafana létrehoz egy nagyon ügyes irányítópultot, ahol megtekinthetjük a mutatóinkat. Ez az irányítópult általában a böngészőben érhető el, de mivel az Ubuntu 20.04 szerver verzióját futtatjuk, az egész parancssori. Tehát hogyan juthatunk el Grafanához?

Adja meg az SSH alagutat. Ugyanaz a protokoll, amelyet az AWS elérésére használunk a parancssorunkról, de fel fogjuk állítani, így létrehozunk egy tükrös portot a helyi számítógépünkön, amely az AWS-példányunk egy adott portjához csatlakozik. Így, amikor helyileg behívjuk a portot, mondjuk a böngésző megnyitásával http: // localhost: 3000, valójában az AWS példányunk 3000-es portját nézzük.

Ennek megfelelő elvégzéséhez szüksége lesz az AWS-re vonatkozó SSH-kulcsra és az AWS IP-információkra. Azt is tudnia kell, hogy melyik portra szeretne csatlakozni. Ebben az esetben tudjuk, hogy a Grafana példányunk a 3000-es porton fut, ezért a parancssori utasításoknak ez az általános felépítése lesz:

ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.comKód nyelve: CSS (css)

Ez lehetővé teszi számunkra, hogy elmegyünk http: // localhost: 3000 a helyi gépünkön, és tekintse meg a Grafana műszerfalat. De még nincs ilyenünk, ezért a következőket kell tennünk:

A Prometheus hozzáadása adatforrásként:

Ugrás az „új adatforrás hozzáadása” oldalra

Kattintson a legördülő menü „Prometheus” elemére

Kattintson a „Mentés és tesztelés” gombra

Kattintson a + gombra a bal oldali menüben, és válassza az „irányítópult importálása” lehetőséget

Add hozzá a Teku Grafana azonosítóját: 13457

És, bada-bing! Megvan az irányítópultunk, amely a saját böngészőnk kényelméből látható:

Beaconcha.in App

A Grafana műszerfala kiváló, a Prometheus pedig információkat tárol nekünk. Vannak azonban más lehetőségek is a validátor állapotának ellenőrzésére.

Már használtam Beaconcha.in Dashboard mobilalkalmazás Androidra. Ez egy egyszerű felület, ami rendben van, mert nem az elsődleges felügyeleti szolgáltatásom. Ez lehetővé teszi számomra, hogy gyorsan ránézzek a telefonomra, hogy ellenőrizzem az érvényesítő állapotát, és értesítéseket küld, ha valami nincs rendben az ellenőrzővel.

Írja be az érvényesítő címet, amelyet meg szeretne nézni, és ez nagyjából ennyi! Ismét nem nagy igénybevételű monitorozás (ezt nyújtja a Grafana Teku feed). De másodlagos szolgáltatásként rendben van, és a bináris „működik-e a validátor, vagy sem”:

A csomópont lekérdezése

Az Ethereum validátor kliens „nyomon követésének” másik módja a lekérdezés! Az Ethereum 1.0 klienshez hasonlóan az Ethereum validátor kliensünk is tárol és fenntart egy világállamot. Sokkal kisebb az Ethereum 1.0-hoz képest, de továbbra is a hitelesítő kliens által tárolt és karbantartott on-line adatok. 

Ez ugyanaz az adat, amelyet a Prometheus / Grafana munkafolyamat fogyaszt. Egyszerűen közelebb kerülünk a fémhez (gyakorlatilag szólva) azzal, hogy magunk kérdezzük meg a csomópontot. Itt van egy minta a rendelkezésre álló adatokról (teljes lista itt):

  • Beacon lánc információ (genesis blokk, blokk fejlécek és gyökér stb.)
  • Validátor adatai (validátorok listája, validátor mérleg, validátor felelősségi körök stb.)
  • Csomópont információ (általános egészségi állapot, társaik listája stb.)

becsavar

Ennek első módja a parancssor. Amikor elindítottuk a Tekut, hozzáadtuk a –rest-api-enabled = true jelzőt. Ez megnyit egy API-végpontot az alapértelmezett 5051-es porton (egy másik portot megadhat a –rest-api-port = zászló használatával). A sudo lsof -i -P -n | futtatásával ellenőrizheti, hogy a portja nyitva van-e fogd hallgatni.

Miután megbizonyosodott arról, hogy a Teku megnyitotta az 5051-es portot, használjuk becsavar küldeni PIHENÉS hívás a Teku API végpontra a következő címen: http: // localhost: 5051. Például itt ellenőrizzük a legjobban teljesítő validátor egyenlegét (a Beaconcha.in szerint):

göndör -X GET "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda"Kód nyelve: PHP (php)

Íme a válasz, amelyet 2021. január közepén kaptam vissza (a Gwei-ben): 

{"adat": [{"index":"4966","egyensúly":"32607646851"}]} Kód nyelve: JSON / JSON megjegyzésekkel (json)

Próbálja ki a következő módszerek bármelyikét: a Teku API doc oldalt az oldal alján található formátumot használva:

curl -X [REST_METHOD] „API_CALL_IN_QUOTES” Kód nyelve: CSS (css)

Swagger felhasználói felület

Van egy alapvető grafikus felhasználói felület az API-hívásokhoz, amelyeket a Teku biztosít, amikor az –rest-api-docs-enabled = true jelzőt hozzáadják az indítási parancsokhoz. Erre épül swagger-ui és alapértelmezés szerint az 5051-es porton van, és az SSH alagút használatával elérhetjük. Kövesse ugyanazokat az SSH alagút lépéseket fentről, de az 5051 jelzéssel, mint a port:

ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.comKód nyelve: CSS (css)

A számítógépünk böngészőjéből ezután navigálhatunk a következő helyre: http: // localhost: 5051 / swagger-ui, ami így néz ki a gépemen:

A világállam és a konszenzus minden nyilvános blokkláncban megjelenik. Ez azt jelenti, hogy az Ethereum 2.0 konszenzusra jut az összes információt tároló és frissítő validátor részéről. Kicsit furcsa, de ha bepillantasz a helyi államodba, annyit jelent, hogy bepillantasz egy sokkal nagyobb struktúrájú egyetlen panelbe. A fraktál egy részhalmaza folyamatosan frissül és valami újdá válik. Próbáld ki!

Pénzügyi elemzés

Első hozzászólásomban felvázoltam a szükséges alapvető anyagkövetelményeket:

  • Három év elkötelezettség a 32 ETH megszerzése és az érvényesítő csomópont fenntartása mellett
  • 32 ETH (plusz <1 ETH a gázköltségekhez)
  • 717,12 USD (három év lefoglalt példány árazás egy m5.xlarge példányhoz) + 120 (100 GB tárhely egyéves költsége, konzervatív módon csaknem teljes tárolókapacitást feltételezve) = 837,12 USD, amelyet az év folyamán kifizettek az AWS-nek
  • MetaMask kiterjesztés (ingyenes telepítés
  • Infura számla (szabad réteg)

Az AWS költségei három évre szóltak, de később megemlítettem, hogy nem voltam egészen kész erre. És örülök, hogy nem tettem! Egy pillanat múlva meglátja, miért, de itt van az alapvető költségbontás a 2020. december 31-i hónapra vonatkozóan:

Az AWS havi költségei

  • Adatátvitel: 8,52 USD
  • Szerver: 142,85 USD
  • Tárolás: 72,50 USD
  • Összesen: 223,87 USD

Eth2 Validator jutalmak 

  • Blokkok: 5
  • Igazolások: ~ 6 803
  • ETH-jutalmak: 0,420097728 (485,83 USD)

Amint valószínűleg láthatja, a 261,96 dolláros nyereség nem nagy elterjedtség egy érvényesítő számára. Van pár lehetőség: Ez egy viszonylag stabil költség, így további 32 ETH-t tehetnék el. A jobb megoldás az, hogy megváltoztatom az általam használt VPS-t, amelyet az első bejegyzésemben említettem, valójában:

Kezdetben biztos voltam benne, hogy az AWS a legjobb virtuális platform, és ez az a szolgáltatás, amelyet a következő és a következő bejegyzéshez használok. Miután azonban végigvittem az egész folyamatot, rájöttem, hogy az AWS túlzott lehet az egyes fejlesztők számára. Úgy tűnik, hogy az AWS valódi erőssége az a képesség, hogy dinamikusan bővüljön a prémium költségekkel járó kereslet kielégítése érdekében. Ennek gazdasági értelme van egy nagyszabású, vállalati szintű projekt esetében, de az egyéni Ethereum 2.0 jelenlegi ügyféligények nem igényelnek ilyen szigorúságot.

Folytatom az AWS-t, de szórakoztatom egy példány futtatásának lehetőségét a Digital Ocean-en, amely megfelelőbb lehet egy egyéni fejlesztő számára. 

Azt hiszem, sokkal jobb profitra tehetem szert, ha a Digital Ocean-en futok, és még mindig nem sikerül eltalálnom a validátor teljesítményemet. Egy barátom egy validátor példányt futtat egy sokkal kisebb VPS-en, ami nagyságrenddel kevesebbbe kerül, és ugyanaz a validátor teljesítményünk. 

Nagyon jó kísérletezni az AWS-szel, és nem sajnálom, hogy van kapacitásom arra az esetre, ha valami oldalirányba megy a jeladó láncon. Azt hiszem azonban igazán nagyszerű, hogy az Eth 2 fejlesztői azt az ígéretet teljesítik, hogy elérhetővé teszik az érvényesítést az otthoni hálózatokból és a telepítésekről! 

A jelenlegi ármodulációk a pénzügyi elemzést is megnehezítik, mivel a szerver költségei USD-ben vannak rögzítve, de a haszon ingadozik. Hosszú távon nagyon bízom abban, hogy a validátor jutalmaim növekedni fognak. A költség-haszon bonyolulttá teszi!

A sorozat utolsó részében megvitatom, hogyan lehet biztonságosan és (remélhetőleg) sikeresen migrálni egy Teku csomópontot egyik szerverről a másikra. A fő kérdés természetesen a vágás. Úgy tűnik, a lezajlott vágások túlnyomó többsége az éppen ez a kérdés miatt. Meglátjuk, hogy megy ez…

FejlesztőkEthereum 2.0Ethereum ClientNewsletterFeliratkozás hírlevelünkre a legfrissebb Ethereum hírekről, vállalati megoldásokról, fejlesztői erőforrásokról és egyebekről.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map