Kā pārraudzīt savu Eth2 Validator un analizēt savu P&L

emuārs 1NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressBiļeteni

Abonējiet mūsu biļetenu.

Epasta adrese

Mēs cienām jūsu privātumu

HomeBlogDevelopers

Kā uzraudzīt savu Eth2 validatoru un analizēt savu P.&L

Autors: Coogan Brennan, 2021. gada 15. janvāris. Ievietots 2021. gada 15. janvārī

Mans ceļojums, lai kļūtu par validatoru Ethereum 2 0 3. daļā

Ja esat jauns šajā sērijā par to, kā palaist savu Eth2 validatoru, noteikti pārbaudiet 1. un 2. daļu. Jums visiem jāpārbauda Bena Edingtona Eth2.News informatīvais izdevums fvai būtiskus atjauninājumus, kļūdu labojumus un ziņas par gaidāmo ceļvedi. Mūsu Eth2 zināšanu bāze ir noderīga, ja jums nepieciešams vairāk priekšstatu par galvenajiem noteikumiem, fāzēm un ConsenSys Eth2 produktiem.

Ievads 

Kopš Ethereum 2.0 Beacon ķēdes ģenēzes sākuma ir pagājis pusotrs mēnesis. Jau ir iesaistīts 2 515 170 ETH (aptuveni 2,9 miljardi ASV dolāru pēc pašreizējās tirgus likmes) ar 61 561 unikālu validatoru un vēl 16 687, kas gaida rindā. Neskatoties uz milzīgo interesi par mietu, tas faktiski ir bijis diezgan neveiksmīgs pusotrs mēnesis: Lielāki traucējumi nav bijuši, tikai dažas slīpsvītras un validatora dalība 98. procentilē lielāko daļu laika. Tagad ir piemērots laiks atvilkt elpu, lai novērtētu līdz šim paveikto. 

Šajā emuāra ziņojumā es apskatīšu jūsu Eth2 validatora uzraudzību un finanšu analīzi. Es sniedzu pārskatu par to, kā piekļūt Teku metrikai, kā iestatīt Beaconcha.in paziņojumus un kā veikt vaicājumu mezglam. Es arī dalos ar savu pašreizējo P&L sadalījums. Šīs sērijas pēdējā daļā es apspriedīšu, kā droši un (cerams) veiksmīgi migrēt Teku mezglu no viena servera uz citu.

Uzraudzība

Šajā sadaļā es aprakstīšu, kā lasīt jūsu validatora mezgla metriku. Ethereum 2.0 validatora palaišana darbojas sadalītās sistēmas infrastruktūrā. Būtiska infrastruktūras uzturēšanas sastāvdaļa ir spēja redzēt notiekošo. Par laimi, Teku ir aprīkots ar lielisku uzraudzības rīku komplektu, kas iespējots zemāk uzsvērtajā “startēšanas” karodziņā “iespējota metrika”

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –net = mainnet<spēcīgs> spēcīgs> <spēcīgs>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE spēcīgs> <spēcīgs>–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 spēcīgs> –rest-api-enabled = true –rest-api-docs-enabled = true – metrika iespējota – validatori-keystore-bloķēšana-iespējota = false <spēcīgs>–datu bāzes ceļš = / var / lib / tekustrong>Kodu valoda: HTML, XML (xml)

Pirms datu lasīšanas mums ir jāveic daži soļi.

Tiem, kas nelieto Teku klientu: pirmkārt, kāpēc? Otrkārt, jūs varat redzēt minimālo metriku, ko visi klienti nodrošina vietnē Ethereum 2.0 specifikācijas šeit.


Prometeja instalēšana

Pirmkārt, mums ir jāinstalē Prometejs, – atvērtā pirmkoda uzraudzības programma un Grafana, atvērtā koda analīzes un interaktīvas vizualizācijas tīmekļa lietotne. Prometejs izvelk datus, un Grafana tos parāda.

Ubuntu komandrindā lejupielādējiet jaunāko stabilo Prometheus:

čokurošanās -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>Kodu valoda: HTML, XML (xml)

Atšifrējiet failu šādi:

darva -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>Kodu valoda: HTML, XML (xml)

Pārvietojiet bināro failu tā, lai tas būtu pieejams komandrindā:

Cd prometheus-2.23.0 Koda valoda: CSS (css) sudo mv prometheus promtool / usr / local / bin /

Pārbaudiet, vai tas ir pareizi instalēts:

prometheus –versija promtool –versija

Izveidojiet prometheus YML konfigurācijas failu:

sudo nano prometheus.ymlKoda valoda: CSS (css)

Ielīmējiet šos parametrus konfigurācijas failā:

global: scrape_interval: 15s scrape_configs: – darba nosaukums: "prometheus" static_configs: – mērķi: ["vietējais saimnieks: 9090"] – darba nosaukums: "teku-dev" scrape_timeout: 10s metrics_path: / metrika shēma: http static_configs: – mērķi: ["vietējais saimnieks: 8008"] Kodu valoda: PHP (php)

Tas uzdod Prometejam ik pēc 10 sekundēm aptaujāt jūsu Teku mezglu 8008 ostā. Nospiediet komandu X un nospiediet Y, lai saglabātu buferi

Tagad izveidosim direktoriju, kurā ievietot mūsu Prometheus konfigurācijas failu:

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

Mēs izveidosim citu direktoriju citiem Prometheus failiem un pārvietosim konsoles un console_libraries moduļus uz / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv konsoles / console_libraries / / etc / prometheus / koda valoda: JavaScript (javascript)

Mēs izveidosim prometheus lietotāju, lai palaistu systemd pakalpojumu, tāpat kā mēs to darījām Teku (Lasiet vairāk šeit par to, kā uz lomām balstīta lietotāja piekļuve ir servera drošības paraugprakse) un piešķir tai piekļuvi atbilstošiem failiem:

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

Visbeidzot, izveidojiet systemd pakalpojumu, kas var darboties fonā, un restartējiet pats, ja tas neizdodas:

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

Šajā failā (kuram jābūt tukšam) mēs ievietosim virkni komandu, kuras sistēmad izpildīs, palaižot pakalpojumu. Nokopējiet tekstu redaktorā:

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

Ierakstiet komandu X, pēc tam ierakstiet “Y”, lai saglabātu izmaiņas

Lai to atjauninātu, mums ir jārestartē systemctl:

sudo systemctl daemon-reload

Sāciet pakalpojumu:

sudo systemctl sākt prometheus

Pārbaudiet, vai tas darbojas pareizi:

sudo systemctl statusa prometheus

Ja redzat kļūdas, iegūstiet sīkāku informāciju, palaižot:

sudo journalctl -f -u prometheus.serviceKoda valoda: CSS (css)

Pakalpojumu Prometheus varat apturēt, palaižot:

sudo systemctl pārtraukt prometheus

Instalējiet Grafana

Grafana instalēšanai mēs izmantosim Linux APT pakotņu pārvaldnieku. Tas ietaupīs mums labu darbu un dos to, kas mums vajadzīgs. Mēs izpildīsim Grafana instalēšanas lapas darbības:

sudo apt-get install -y apt-transport-https sudo apt-get install -y programmatūras īpašības-common wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Code valoda: JavaScript (javascript)

Mēs pievienojam stabilo Grafana repozitoriju atjauninājumiem:

atbalss "deb https://packages.grafana.com/oss/deb stabilais galvenais" | sudo tee -a /etc/apt/sources.list.d/grafana.listKoda valoda: PHP (php)

Tad mēs palaižam APT:

sudo apt-get update sudo apt-get install grafanaKoda valoda: JavaScript (javascript)

Pakete mums izveido systemd pakalpojumu (ieskaitot lietotāja grafanu), tāpēc mums vienkārši jāpalaiž:

sudo servisa grafana-servera palaišana sudo pakalpojuma grafana-servera statuss sudo update-rc.d grafana-servera noklusējums Kodu valoda: CSS (css)

SSH tunelēšana

Grafana izveido ļoti gludu informācijas paneli, kurā mēs varam skatīt mūsu metriku. Šis informācijas panelis parasti ir pieejams pārlūkprogrammā, taču, tā kā mēs izmantojam Ubuntu 20.04 servera versiju, tas viss ir komandrinda. Tātad, kā mēs piekļūstam Grafanai?

Ievadiet SSH tunelēšanu. Tas ir tas pats protokols, ko mēs izmantojam, lai piekļūtu AWS no mūsu komandrindas, taču mēs to iestatīsim, lai vietējā datorā izveidotu spoguļportu, kas savienojas ar noteiktu AWS instances portu. Tādā veidā, kad vietne tiek izsaukta ostā, teiksim, atverot pārlūkprogrammu http: // localhost: 3000, mēs faktiski skatāmies uz 3000 portu mūsu AWS instancē.

Lai to izdarītu pareizi, jums būs nepieciešama AWS SSH atslēga un AWS IP informācija. Jums arī jāzina, ar kuru portu vēlaties izveidot savienojumu. Šajā gadījumā mēs zinām, ka mūsu Grafana instance darbojas 3000 portā, tāpēc komandrindas instrukcijām būs šāda vispārīgā struktūra:

ssh -N -L 3000: vietējais saimnieks: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.comKoda valoda: CSS (css)

Tas ļauj mums doties uz http: // localhost: 3000 mūsu vietējā mašīnā un skatiet mūsu Grafana informācijas paneli. Bet mums to vēl nav, tāpēc mums jādara šādi:

Pievienojiet Prometeju kā datu avotu:

Pārejiet uz “pievienot jaunu datu avotu”

Nolaižamajā izvēlnē noklikšķiniet uz “Prometejs”

Noklikšķiniet uz “Saglabāt un pārbaudīt”

Kreisās puses izvēlnē noklikšķiniet uz + un atlasiet “importēt informācijas paneli”

Pievienojiet Teku Grafana ID: 13457

Un, bada-bing! Mums ir mūsu informācijas panelis, kas ir ērti redzams mūsu pašu pārlūkprogrammā:

Beaconcha.in App

Informācijas panelis Grafana ir lielisks, un Prometejs mums glabā informāciju. Tomēr ir arī citas iespējas pārbaudīt validatora statusu.

Esmu izmantojis Beaconcha.in Dashboard mobilā lietotne Android ierīcēm. Tā ir vienkārša saskarne, kas ir lieliski, jo tas nav mans galvenais uzraudzības pakalpojums. Tas ļauj man ātri ieskatīties tālrunī, lai pārbaudītu validētāja statusu, un sniedz paziņojumus, ja ar validatoru kaut kas nav kārtībā.

Jūs ievadāt apstiprinātāja adresi, kuru vēlaties skatīties, un tas ir gandrīz viss! Atkal, ne lieljaudas uzraudzība (to nodrošina Grafana Teku plūsma). Bet tas ir lieliski kā sekundārais pakalpojums un binārs “vai validators darbojas vai nedarbojas”:

Vaicājums mezglam

Vēl viens veids, kā “uzraudzīt” mūsu Ethereum validatora klientu, ir to vaicāt! Tāpat kā Ethereum 1.0 klients, arī mūsu Ethereum validatora klients glabā un uztur pasaules valsti. Tas ir daudz mazāks, salīdzinot ar Ethereum 1.0, taču tie joprojām ir ķēdes dati, kurus glabā un uztur jūsu validētāja klients. 

Šie ir tie paši dati, ko patērē Prometheus / Grafana darbplūsma. Mēs vienkārši tuvojamies metālam (faktiski runājot), paši vaicājot mezglam. Šeit ir pieejamo datu paraugs (pilns saraksts šeit):

  • Bākas ķēdes informācija (ģenēzes bloķēšana, bloku galvenes un saknes utt.)
  • Informācija par validatoru (validatoru saraksts, validatora bilance, validētāja pienākumi utt.)
  • Informācija par mezglu (vispārējā veselība, vienaudžu saraksts utt.)

CURL

Pirmais veids, kā to izdarīt, ir komandrinda. Sākot Teku, mēs pievienojām karodziņu –rest-api-enabled = true. Tas atver API galapunktu noklusējuma portā 5051 (citu portu varat norādīt, izmantojot karodziņu –rest-api-port =). Varat vēlreiz pārbaudīt, vai jūsu ports ir atvērts, palaižot sudo lsof -i -P -n | grep Klausieties.

Kad esat apstiprinājis, ka Teku ir atvēris 5051. portu, mēs to izmantosim CURL sūtīt ATPŪTA izsaukumi uz Teku API galapunktu plkst http: // localhost: 5051. Piemēram, šeit ir veids, kā mēs pārbaudām visvērtīgākā validētāja bilanci (saskaņā ar Beaconcha.in):

čokurošanās -X SAŅEMT "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda"Kodu valoda: PHP (php)

Lūk, atbildi, ko es saņēmu 2021. gada janvāra vidū (Gwei): 

{"dati": [{"indekss":"4966","līdzsvars":"32607646851"}]} Kodu valoda: JSON / JSON ar komentāriem (json)

Izmēģiniet kādu no metodēm Teku API doc lapu izmantojot formātu šīs lapas apakšdaļā:

čokurošanās -X [REST_METHOD] “API_CALL_IN_QUOTES” Koda valoda: CSS (css)

Pārspīlēta lietotāja saskarne

Teku nodrošina pamata grafisko lietotāja saskarni API zvaniem, kad startēšanas komandās tiek pievienots karodziņš –rest-api-docs-enabled = true. Tas ir veidots tālāk muldēt-ui un tas pēc noklusējuma atrodas portā 5051, un mēs tam varam piekļūt, izmantojot SSH tuneli. Izpildiet tos pašus SSH tuneļa veidošanas soļus no augšas, bet ar 5051 kā ports:

ssh -N -L 5051: vietējais saimnieks: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.comKoda valoda: CSS (css)

Pēc datora pārlūkprogrammas mēs varam pāriet uz http: // localhost: 5051 / swagger-ui, kas manā mašīnā izskatās šādi:

Pasaules stāvoklis un vienprātība ir kaut kas tāds, kas parādās visos publiskajos blokķēdēs. Tas nozīmē, ka visi validētāji, kas glabā un atjaunina informāciju, sasniedz Ethereum 2.0 vienprātību. Tas ir mazliet nerdijs, bet, lai ieskatītos savā vietējā stāvoklī, skatieties vienā daudz lielākas struktūras rūtī. Fraktāla apakškopa pastāvīgi atjaunojas un kļūst par kaut ko jaunu. Pamēģini!

Finanšu analīze

Pirmajā ziņojumā es ieskicēju nepieciešamās pamatprasības:

  • Trīs gadu apņemšanās iegūt 32 ETH un uzturēt validatora mezglu
  • 32 ETH (plus <1 ETH gāzes izmaksām)
  • 717,12 ASV dolāri (trīs gadu rezervēto gadījumu cena m5.xlarge gadījumam) + 120 (viena gada 100 GB atmiņas izmaksas, konservatīvi pieņemot, ka gandrīz pilna krātuves jauda) = 837,12 USD, kas gada laikā samaksāts AWS
  • MetaMask paplašinājums (bezmaksas instalēt
  • Infura konts (bezmaksas līmenis)

AWS izmaksas bija paredzētas trīs gadu bloķēšanai, taču vēlāk es minēju, ka neesmu gluži gatavs to darīt. Un es priecājos, ka to nedarīju! Pēc brīža jūs redzēsit, kāpēc, bet šeit ir mans pamatsadalījums par izmaksām 2020. gada 31. decembrī:

AWS ikmēneša izmaksas

  • Datu pārsūtīšana: 8,52 USD
  • Serveris: 142,85 USD
  • Uzglabāšana: $ 72,50
  • Kopā: 223,87 USD

Eth2 Validator atlīdzības 

  • Bloki: 5
  • Apliecinājumi: ~ 6 803
  • ETH atlīdzības: 0,420097728 (485,83 USD USD)

Kā jūs droši vien redzat, peļņa 261,96 ASV dolāru apmērā nav liela starpība vienam validatoram. Ir pāris varianti: Šīs ir salīdzinoši stabilas izmaksas, tāpēc es varētu likt vēl 32 ETH. Labāka iespēja varētu būt izmantotā VPS maiņa, ko es pieminēju savā pirmajā ierakstā, faktiski:

Sākotnēji es biju pārliecināts, ka AWS ir labākā virtuālā platforma, un tas ir pakalpojums, ko izmantošu šai un nākamajai ziņai. Tomēr, izejot visu procesu, es sapratu, ka AWS atsevišķam izstrādātājam varētu būt pārspīlēts. Šķiet, ka AWS patiesā stiprā puse ir tā spēja dinamiski palielināties, lai apmierinātu pieprasījumu, kam ir augstākas izmaksas. Tas ir ekonomiski lietderīgi liela mēroga uzņēmuma līmeņa projektam, taču individuālajām Ethereum 2.0 pašreizējām klientu prasībām šāda stingrība nav nepieciešama..

Es turpināšu izmantot AWS, bet izklaidēju arī iespēju palaist instanci Digitālajā okeānā, kas var būt piemērotāks individuālam izstrādātājam. 

Es domāju, ka es varu iegūt daudz labāku peļņu no skriešanas Digitālajā okeānā un joprojām neuztvert manu validatora sniegumu. Draugs vada validatora instanci ar daudz mazāku VPS, kura cena ir par mazāku, un mums ir tāda pati validatora veiktspēja. 

Ir lieliski eksperimentēt ar AWS, un es nenožēloju, ka man ir jauda, ​​ja bākas ķēdē kaut kas iet uz sāniem. Tomēr es domāju, ka tā ir tiešām lieliski, ka Eth 2 izstrādātāji pilda solījumu padarīt validēšanu pieejamu mājas tīklos un iestatījumos! 

Pašreizējās cenu modulācijas arī apgrūtina finanšu analīzi, jo servera izmaksas tiek noteiktas USD, bet atlīdzība mainās. Ilgtermiņā esmu ļoti pārliecināts, ka manas validatora atlīdzības vērtība pieaugs. Tas patiešām padara izmaksu un ieguvumu sarežģītu!

Par šīs sērijas pēdējo daļu es apspriedīšu, kā droši un (cerams) veiksmīgi migrēt Teku mezglu no viena servera uz citu. Galvenais jautājums, protams, tiek samazināts. Šķiet, ka lielākā daļa notikušo slīpsvītru ir tieši šī jautājuma dēļ. Mēs redzēsim, kā tas notiks …

IzstrādātājiEthereum 2,0

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