Kuinka seurata Eth2 Validatoriasi ja analysoida P&L: täsi

blogi 1NewsDevelopersEnterpriseBlockchain ExplainedTapahtumat ja konferenssitPainaUutiskirjeet

tilaa uutiskirjeemme.

Sähköpostiosoite

Kunnioitamme yksityisyyttäsi

EtusivuBlogiKehittäjät

Kuinka seurata Eth2 Validatoriasi ja analysoida P&L

Kirjoittaja Coogan Brennan 15. tammikuuta 2021 Lähetetty 15. tammikuuta 2021

Matkani tulla vahvistajaksi Ethereum 2 0: n osassa 3

Jos et ole vielä tutustunut tähän sarjaan oman Eth2-vahvistimen käyttämisestä, tutustu osiin 1 ja 2. Tarkastakaa kaikkien Ben Edgingtonin Eth2.News-uutiskirje ftai tärkeitä päivityksiä, virhekorjauksia ja uutisia tulevasta tiekartasta. Eth2-tietämyskanta on hyödyllinen, jos tarvitset lisää taustaa keskeisistä termeistä, vaiheista ja ConsenSysin Eth2-tuotteista.

Johdanto 

On kulunut puolitoista kuukautta siitä, kun Ethereum 2.0 Beacon -ketjun syntymä alkoi. Jo 2515 170 ETH on ollut mukana (noin 2,9 miljardia dollaria nykyisillä markkinahinnoilla) 61 561 yksilöllisen validoijan kanssa ja vielä 16 687 jonossa. Huolimatta valtavasta kiinnostuksesta panostamiseen, se on tosiasiassa ollut melko tapahtumaton puolitoista kuukautta: Ei ole tapahtunut suuria häiriöitä, vain muutama viiva ja validatorin osallistuminen 98. prosenttipisteeseen suurimman osan ajasta. Nyt on hyvä aika ottaa hengitys ja arvioida tähän mennessä tekemäämme. 

Tässä blogiviestissä käsittelen Eth2-vahvistimesi seurantaa ja taloudellista analyysia. Annan yleiskuvan siitä, miten pääset Teku-mittareihin, määritetään Beaconcha.in-ilmoitukset ja miten kysytään solmulta. Jaan myös nykyisen P: n&L-erittely. Tämän sarjan viimeisessä erässä keskustelen siitä, kuinka Teku-solmu voidaan turvallisesti ja (toivottavasti) siirtää onnistuneesti palvelimelta toiselle.

Seuranta

Tässä osiossa aion käydä läpi, miten luetaan validointisolmun tiedot. Ethereum 2.0 -tarkistajan suorittaminen on hajautetun järjestelmän infrastruktuuria. Ratkaiseva osa infrastruktuurin ylläpidossa on mahdollisuus nähdä, mitä tapahtuu. Onneksi Tekussa on loistava seurantatyökalupaketti, joka on varustettu käynnistyskomennon ”–metrics-enabled” -lipulla, joka on korostettu alla:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<vahva> vahva> <vahva>–eth1-päätepiste = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE vahva> <vahva>–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 vahva> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <vahva>–tietokanta-polku = / var / lib / tekustrong>Koodikieli: HTML, XML (xml)

Meidän on noudatettava muutama vaihe ennen kuin voimme lukea tietoja.

Niille, jotka eivät käytä Teku-asiakasta: Ensinnäkin, miksi? Toiseksi näet kaikkien asiakkaiden tarjoamat vähimmäistiedot Ethereum 2.0: n tekniset tiedot täällä.

Prometheuksen asentaminen

Ensinnäkin meidän on asennettava Prometheus, – avoimen lähdekoodin seurantaohjelma ja – Grafana, avoimen lähdekoodin analyysi- ja interaktiivinen visualisointisovellus. Prometheus vetää tiedot ja Grafana näyttää ne.

Lataa viimeisin vakaa Prometheus Ubuntun komentoriviltäsi:

kihara -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>Koodikieli: HTML, XML (xml)

Pura tiedosto seuraavasti:

terva -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>Koodikieli: HTML, XML (xml)

Siirrä binaari niin, että se on käytettävissä komentoriviltä:

CD prometheus-2.23.0 Koodikieli: CSS (css) sudo mv prometheus promtool / usr / local / bin /

Tarkista, että se on asennettu oikein:

prometheus –version promtool –version

Luo prometheus YML -määritystiedosto:

sudo nano prometheus.ymlKoodin kieli: CSS (css)

Liitä nämä parametrit määritystiedostoon:

global: scrape_interval: 15s scrape_configs: – työn_nimi: "prometheus" static_configs: – kohteet: ["paikallinen isäntä: 9090"] – työn nimi: "teku-dev" scrape_timeout: 10s metrics_path: / metrics-malli: http static_configs: – kohteet: ["paikallinen isäntä: 8008"] Koodikieli: PHP (php)

Tämä kehottaa Prometheusta kyselemään Teku-solmusi 10 sekunnin välein 8008-portissa. Napsauta komentoa X ja paina Y tallentaaksesi puskurin

Luodaan nyt hakemisto Prometheus-määritystiedoston sijoittamiseksi:

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

Teemme yhden toisen hakemiston muille Prometheus-tiedostoille ja siirrämme konsoli- ja konsolikirjastomoduulit kansioon / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv -konsolit / konsolikirjastot / / etc / prometheus / Koodikieli: JavaScript (javascript)

Luomme prometheus-käyttäjän suorittamaan systemd-palvelua, kuten tekimme Tekulle (lue lisää täältä siitä, miten roolipohjainen käyttöoikeus on paras käytäntö palvelinten turvallisuuden kannalta) ja anna sille pääsy asianmukaisiin tiedostoihin:

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 / Koodikieli: JavaScript (javascript)

Luo viimeiseksi systemd-palvelu, joka voi toimia taustalla ja käynnistää itsensä uudelleen, jos se epäonnistuu:

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

Tässä tiedostossa (jonka pitäisi olla tyhjä), aiomme laittaa sarjan komentoja, jotka systemd suorittaa, kun aloitamme palvelun. Kopioi seuraava tekstieditoriin:

[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. kirjastot = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Install] WantedBy = multi-user.targetCode language: JavaScript (javascript)

Kirjoita komento-X ja kirjoita sitten “Y” tallentaaksesi muutokset

Meidän on käynnistettävä systemctl uudelleen sen päivittämiseksi:

sudo systemctl daemon-reload

Käynnistä palvelu:

sudo systemctl Käynnistä prometheus

Tarkista, että se toimii kunnolla:

sudo systemctl tila prometheus

Jos näet virheitä, saat lisätietoja suorittamalla:

sudo journalctl -f -u prometheus.serviceKoodin kieli: CSS (css)

Voit pysäyttää Prometheus-palvelun suorittamalla:

sudo systemctl lopettaa prometheus

Asenna Grafana

Aiomme käyttää APT-paketinhallintaohjelmaa Linuxille Grafanan asentamiseen. Tämä säästää meille paljon työtä ja antaa meille mitä tarvitsemme. Noudatamme Grafanan asennussivun ohjeita:

sudo apt-get install -y apt-transport-https sudo apt-get install -y ohjelmisto-ominaisuudet-yhteinen wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Koodikieli: JavaScript (javascript)

Lisätään vakaa Grafana-arkisto päivityksiä varten:

kaiku "deb https://packages.grafana.com/oss/deb vakaa pää" | sudo tee -a /etc/apt/sources.list.d/grafana.listKoodin kieli: PHP (php)

Sitten suoritamme APT: n:

sudo apt-get update sudo apt-get install grafanaKoodin kieli: JavaScript (javascript)

Paketti asettaa meille systemd-palvelun (mukaan lukien käyttäjän grafana), joten meidän on vain suoritettava:

sudo service grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server defaults Koodin kieli: CSS (css)

SSH-tunnelointi

Grafana luo erittäin tyylikkään hallintapaneelin, jossa voimme tarkastella mittareitamme. Kojelauta on tyypillisesti saatavana selaimessa, mutta koska käytössä on Ubuntu 20.04 -palvelinversio, kaikki on komentorivi. Joten miten pääsemme Grafanaan?

Anna SSH-tunnelointi. Se on sama protokolla, jota käytämme AWS: n käyttämiseen komentoriviltä, ​​mutta aiomme asettaa sen, joten luomme paikalliseen tietokoneeseemme peiliportin, joka muodostaa yhteyden tiettyyn AWS-ilmentymän porttiin. Tällä tavoin, kun kutsumme portin paikallisesti, sano avaamalla selain kohtaan http: // paikallinen isäntä: 3000, tarkastelemme itse asiassa AWS-instanssimme 3000-porttia.

Voit tehdä tämän oikein tarvitsemalla SSH-avaimesi AWS: lle ja AWS: n IP-tiedoille. Sinun on myös tiedettävä, mihin porttiin haluat muodostaa yhteyden. Tässä tapauksessa tiedämme, että Grafana-esiintymämme on käynnissä portilla 3000, joten komentorivin ohjeilla on tämä yleinen rakenne:

ssh -N -L 3000: paikallinen isäntä: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Koodin kieli: CSS (css)

Tämä antaa meille mahdollisuuden mennä http: // localhost: 3000 paikallisella koneellamme ja katso Grafana-kojelautamme. Mutta meillä ei vielä ole sellaista, joten meidän on tehtävä seuraava:

Lisää Prometheus tietolähteeksi:

Siirry kohtaan “lisää uusi tietolähde”

Napsauta avattavasta valikosta “Prometheus”

Napsauta “Tallenna ja testaa”

Napsauta vasemmanpuoleisessa valikossa + ja valitse “Tuo hallintapaneeli”

Lisää Teku Grafanan tunnus: 13457

Ja, bada-bing! Meillä on kojelauta, joka näkyy oman selaimen mukavasti:

Beaconcha.in App

Grafana-kojelauta on erinomainen, ja Prometheus tallentaa tietoja meille. Validointilaitteen tilan tarkistamiseen on kuitenkin muita vaihtoehtoja.

Olen käyttänyt Beaconcha.in Dashboard -mobiilisovellus Androidille. Se on yksinkertainen käyttöliittymä, mikä on hieno, koska se ei ole ensisijainen seurantapalveluni. Sen avulla voin nopeasti katsoa puhelimeeni tarkistaaksesi validointilaitteen tilan ja antaa ilmoituksia, jos validatorissa on jotain vikaa.

Syötä vahvistusosoite, jonka haluat katsella, ja siinä kaikki! Jälleen, ei kovaa valvontaa (niin Grafana Teku -syöte tarjoaa). Mutta se on hieno toissijaisena palveluna ja binaarinen “toimii validointilaite vai ei”:

Solmun kysely

Toinen tapa “valvoa” Ethereum-validointiasiakasta on kysyä sitä! Ethereum 1.0 -asiakkaan tavoin Ethereum-validointiasiakkaamme tallentaa ja ylläpitää maailmantilaa. Se on paljon pienempi kuin Ethereum 1.0, mutta se on edelleen ketjussa oleva tieto, jonka validointiasiakkaasi tallentaa ja ylläpitää. 

Tämä on sama data, jota kuluttaa Prometheus / Grafana-työnkulku. Olemme yksinkertaisesti lähestymässä metallia (käytännössä) kyselemällä itse solmua. Tässä on näyte käytettävissä olevista tiedoista (täydellinen luettelo täältä):

  • Majakkaketjun tiedot (geneesi lohko, lohkon otsikot ja juuri jne.)
  • Validointitiedot (luettelo validoijista, validointitase, validoijan vastuut jne.)
  • Solmutiedot (yleinen terveys, ikäisensä luettelo jne.)

kiemura

Ensimmäinen tapa tehdä tämä on komentoriviltä. Kun aloitimme Tekun, lisäsimme lipun –rest-api-enabled = true. Tämä avaa API-päätepisteen oletusporttiin 5051 (voit määrittää toisen portin käyttämällä lippua –rest-api-port =). Voit tarkistaa porttisi olevan auki suorittamalla sudo lsof -i -P -n | grep KUUNTELE.

Kun olet vahvistanut, että Teku on avannut portin 5051, käytämme sitä kiemura lähettää LEVÄTÄ kutsuja Teku API -päätepisteeseen osoitteessa http: // localhost: 5051. Esimerkiksi tällä tavoin tarkistamme parhaiten suoriutuvan vahvistajan saldon (Beaconcha.inin mukaan):

kihara -X SAA "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda"Koodikieli: PHP (php)

Tässä vastaus, jonka sain takaisin tammikuun puolivälissä 2021 (Gwei: ssä): 

{"tiedot": [{"indeksi":"4966","saldo":"32607646851"}]} Koodikieli: JSON / JSON ja kommentit (json)

Kokeile mitä tahansa menetelmistä Teku API doc -sivulla käyttämällä tämän sivun alaosassa olevaa muotoa:

käpristyminen -X [REST_METHOD] “API_CALL_IN_QUOTES” Koodikieli: CSS (css)

Swagger-käyttöliittymä

Teku tarjoaa graafisen käyttöliittymän API-puheluille, kun lippu –rest-api-docs-enabled = true lisätään käynnistyskomentoihin. Se on rakennettu swagger-ui ja se on oletuksena portissa 5051, ja voimme käyttää sitä SSH-tunnelointiin. Seuraa samoja SSH-tunnelointivaiheita ylhäältä, mutta 5051: llä kuin portti:

ssh -N-L 5051: paikallinen isäntä: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Koodin kieli: CSS (css)

Tietokoneemme selaimesta voimme sitten navigoida kohtaan http: // localhost: 5051 / swagger-ui, joka näyttää tältä koneellani:

Maailmantila ja yksimielisyys on jotain, joka näkyy kaikissa julkisissa lohkoketjuissa. Tämä tarkoittaa, että kaikki validoijat, jotka tallentavat ja päivittävät tietoja, pääsevät yksimielisyyteen Ethereum 2.0: sta. Se on vähän nörtti, mutta tutustua paikalliseen valtioosi tarkoittaa vertaista yhdelle ruudulle, jossa on paljon suurempi rakenne. Osa fraktaalista päivittyy jatkuvasti ja nousee uudeksi. Kokeile!

Talousanalyysi

Ensimmäisessä viestissäni luonnostelin tarvittavat materiaalivaatimukset:

  • Kolmen vuoden sitoutuminen 32 ETH: n sijoittamiseen ja validointisolmun ylläpitoon
  • 32 ETH (plus <1 ETH kaasukustannuksille)
  • 717,12 dollaria (kolmen vuoden varattu ilmentymien hinnoittelu m5.xlarge-ilmentymälle) + 120 (yhden vuoden 100 Gt: n tallennuskustannus, olettaen konservatiivisesti lähes koko tallennuskapasiteetin) = 837,12 dollaria, joka maksettiin vuoden aikana AWS: lle
  • MetaMask-laajennus (ilmainen asennus
  • Infura-tili (ilmainen taso)

AWS: n kustannukset olivat kolmen vuoden lukitus, mutta mainitsin myöhemmin, etten ollut aivan valmis tekemään niin. Ja olen iloinen, etten! Näet miksi hetken kuluttua, mutta tässä on kustannusten perusjakauma 31. joulukuuta 2020:

AWS: n kuukausikustannukset

  • Tiedonsiirto: 8,52 dollaria
  • Palvelin: 142,85 dollaria
  • Varastointi: 72,50 dollaria
  • Yhteensä: 223,87 dollaria

Eth2 Validator -palkinnot 

  • Lohkot: 5
  • Todistukset: ~ 6,803
  • ETH-palkinnot: 0,420097728 (485,83 USD)

Kuten luultavasti näet, 261,96 dollarin voitto ei ole hieno leviäminen yhdelle validoijalle. On olemassa pari vaihtoehtoa: Tämä on suhteellisen vakaa hinta, joten voisin panostaa vielä 32 ETH: ta. Parempi vaihtoehto voi olla käyttämäni VPS: n vaihtaminen, jonka mainitsin ensimmäisessä viestissäni:

Aluksi olin varma, että AWS oli paras virtuaalialusta, ja sitä palvelua käytän tähän ja seuraavaan viestiin. Kuitenkin, kun olen käynyt läpi koko prosessin, tajusin, että AWS saattaa olla ylivoimainen yksittäiselle kehittäjälle. AWS: n todellinen vahvuus näyttää olevan sen kyky dynaamisesti laajentua vastaamaan kysyntään, josta aiheutuu ylimääräisiä kustannuksia. Tämä on taloudellisesti järkevää laajamittaiselle yritystason projektille, mutta yksittäiset Ethereum 2.0 -asiakkaan vaatimukset eivät vaadi tällaista tarkkuutta.

Jatkan AWS: n kanssa, mutta viihdyn myös mahdollisuudesta suorittaa ilmentymä Digital Oceanilla, mikä saattaa olla sopivampi yksittäiselle kehittäjälle. 

Luulen, että voin saada paljon paremman voiton juoksemalla Digital Oceanilla, enkä silti saa osumaa validatorini suorituskykyyn. Ystäväsi käyttää validointiesimerkkiä paljon pienemmällä VPS: llä, joka maksaa suuruusluokan vähemmän ja meillä on sama validointityökalu. 

On hienoa kokeilla AWS: ää, enkä valitettavasti ole kapasiteettia, jos jokin menee sivuttain majakkaketjussa. Uskon kuitenkin Todella hienoa, että Eth 2: n kehittäjät täyttävät lupauksen tehdä validointi saataville kotiverkoista ja -asennuksista! 

Nykyiset hintamodulaatiot tekevät myös taloudellisesta analyysistä vaikeaa, koska palvelinkustannukset ovat kiinteitä Yhdysvaltain dollareissa, mutta palkkiot vaihtelevat. Pitkällä aikavälillä olen erittäin varma, että validointipalkintojeni arvo kasvaa. Se tekee kustannus-hyöty-hankalasta!

Tämän sarjan viimeisessä erässä keskustelen siitä, kuinka Teku-solmu voidaan turvallisesti ja (toivottavasti) siirtää onnistuneesti palvelimelta toiselle. Suurin ongelma on tietysti leikkaus. Näyttää siltä, ​​että suurin osa tapahtuneista viiltelyistä on juuri tämän asian takia. Näemme, miten menee …

KehittäjätEthereum 2.0Ethereum ClientNewsletterTilaa uutiskirjeemme, jossa on uusimmat Ethereum-uutiset, yritysratkaisut, kehittäjien resurssit ja paljon muuta.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me