blog 1NieuwsOntwikkelaarsEnterpriseBlockchain ExplainedEvenementen en conferentiesPersNieuwsbrieven

Abonneer op onze nieuwsbrief.

E-mailadres

Wij respecteren uw privacy

HomeBlogOntwikkelaars

Hoe u uw Eth2-validator kunt controleren en uw P.&L.

door Coogan Brennan 15 januari 2021 Geplaatst op 15 januari 2021

Mijn reis om een ​​validator te worden op Ethereum 2 0 Deel 3


Als je nieuw bent in deze serie over het runnen van je eigen Eth2-validator, bekijk dan deel 1 en deel 2. Je zou allemaal moeten kijken naar Ben Edgington’s Eth2.News nieuwsbrief fof essentiële updates, bugfixes en nieuws over de komende roadmap. Onze Eth2 Knowledge Base is nuttig als u meer achtergrondinformatie nodig heeft over belangrijke termen, fasen en ConsenSys ‘Eth2-producten.

Intro 

Het is anderhalve maand geleden sinds de start van de Ethereum 2.0 Beacon-keten. Er is al 2.515.170 ETH ingezet (ongeveer $ 2,9 miljard tegen de huidige markttarieven) met 61.561 unieke validators en nog eens 16.687 in de wachtrij. Ondanks de enorme belangstelling voor uitzetten, is het eigenlijk een vrij rustige anderhalve maand geweest: er zijn geen grote verstoringen geweest, alleen een paar schuine strepen en validator deelname aan het 98e percentiel meestal. Dit is een goed moment om even op adem te komen en de balans op te maken van wat we tot nu toe hebben gedaan. 

In deze blogpost zal ik ingaan op de monitoring en financiële analyse van uw Eth2-validator. Ik geef een overzicht van hoe u Teku-metrische gegevens kunt openen, Beaconcha.in-meldingen kunt instellen en hoe u het knooppunt kunt opvragen. Ik deel ook mijn huidige P&L uitsplitsing. In de laatste aflevering van deze serie zal ik bespreken hoe u veilig en (hopelijk) met succes een Teku-knooppunt van de ene server naar de andere kunt migreren.

Toezicht houden

In dit gedeelte ga ik doornemen hoe u de statistieken van uw validatorknooppunt kunt lezen. Het uitvoeren van een Ethereum 2.0-validator is het uitvoeren van infrastructuur voor een gedistribueerd systeem. Een cruciaal onderdeel van het onderhouden van de infrastructuur is kunnen zien wat er aan de hand is. Gelukkig wordt Teku geleverd met een geweldige reeks monitoringtools die zijn ingeschakeld met de vlag “–metrics-enabled” op onze opstartopdracht, hieronder gemarkeerd:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<sterk> sterk> <sterk>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE sterk> <sterk>–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 sterk> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <sterk>–data-base-path = / var / lib / tekustrong>Codetaal: HTML, XML (xml)

We moeten wel een paar stappen doorlopen voordat we de gegevens kunnen lezen.

Voor degenen die geen Teku-client hebben: ten eerste, waarom? Ten tweede kunt u de minimale statistieken zien die door alle klanten in Ethereum 2.0-specificaties hier.

Prometheus installeren

Eerst moeten we installeren Prometheus, een open source monitoring programma, en Grafana, een open-source web-app voor analyse en interactieve visualisatie. Prometheus haalt de gegevens op en Grafana geeft deze weer.

Download op uw Ubuntu-opdrachtregel de nieuwste stabiele Prometheus:

krul -JLO <een 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>Codetaal: HTML, XML (xml)

Decomprimeer het bestand als volgt:

tar -zxvf <een 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>Codetaal: HTML, XML (xml)

Verplaats het binaire bestand zodat het beschikbaar is vanaf de opdrachtregel:

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

Controleer of het correct is geïnstalleerd:

prometheus –version promtool –version

Maak een Prometheus YML-configuratiebestand:

sudo nano prometheus.yml Code taal: CSS (css)

Plak deze parameters in het configuratiebestand:

global: scrape_interval: 15s scrape_configs: – job_name: "Prometheus" static_configs: – doelen: ["localhost: 9090"] – job_naam: "teku-dev" scrape_timeout: 10s metrics_path: / metrics-schema: http static_configs: – doelen: ["localhost: 8008"] Codetaal: PHP (php)

Dit geeft Prometheus de opdracht om uw Teku-knooppunt elke 10 seconden op de 8008-poort te pollen. Druk op command-X en druk op Y om de buffer op te slaan

Laten we nu een map maken om ons Prometheus-configuratiebestand in te plaatsen:

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

We gaan een andere map maken voor andere Prometheus-bestanden en de console en console_libraries-modules verplaatsen naar / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv consoles / console_libraries / / etc / prometheus / Code taal: JavaScript (javascript)

We maken een prometheus-gebruiker om een ​​systemd-service uit te voeren, zoals we deden voor Teku (Lees hier meer over hoe op rollen gebaseerde gebruikerstoegang de beste methode is voor serverbeveiliging) en geef het toegang tot de juiste bestanden:

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

Maak als laatste een systemd-service die op de achtergrond kan worden uitgevoerd en zichzelf opnieuw opstart als deze mislukt:

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

In dit bestand (dat leeg zou moeten zijn), gaan we een reeks opdrachten invoeren die de systemd moet uitvoeren wanneer we de service starten. Kopieer het volgende naar de teksteditor:

[Eenheid] Beschrijving = Prometheus wil = netwerk-online.target Na = netwerk-online.target [Service] Type = eenvoudig Gebruiker = prometheus Groep = prometheus Herstart = altijd 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. libraries = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Install] WantedBy = multi-user.targetCode taal: JavaScript (javascript)

Typ command-X en typ vervolgens “Y” om uw wijzigingen op te slaan

We moeten systemctl herstarten om het bij te werken:

sudo systemctl daemon-reload

Start de service:

sudo systemctl start prometheus

Controleer of het goed werkt:

sudo systemctl status prometheus

Als u fouten ziet, kunt u voor meer informatie het volgende uitvoeren:

sudo journalctl -f -u prometheus.service Code taal: CSS (css)

U kunt de Prometheus-service stoppen door het volgende uit te voeren:

sudo systemctl stop prometheus

Installeer Grafana

We gaan de APT-pakketbeheerder voor Linux gebruiken om Grafana te installeren. Dit bespaart ons veel werk en geeft ons wat we nodig hebben. We volgen de stappen van de Grafana-installatiepagina:

sudo apt-get install -y apt-transport-https sudo apt-get install -y software-eigenschappen-algemeen wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Code taal: JavaScript (javascript)

We voegen de stabiele Grafana-repository toe voor updates:

echo "deb https://packages.grafana.com/oss/deb stable main" ​sudo tee -a /etc/apt/sources.list.d/grafana.list Code taal: PHP (php)

Vervolgens voeren we APT uit:

sudo apt-get update sudo apt-get install grafana Code taal: JavaScript (javascript)

Het pakket zet een systemd-service voor ons op (inclusief een gebruikersgrafana), dus we hoeven alleen maar het volgende uit te voeren:

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

SSH-tunneling

Grafana creëert een zeer gelikt dashboard waar we onze statistieken kunnen bekijken. Dat dashboard is meestal beschikbaar in de browser, maar aangezien we de serverversie van Ubuntu 20.04 gebruiken, is het allemaal een opdrachtregel. Dus hoe krijgen we toegang tot Grafana?

Voer SSH-tunneling in. Het is hetzelfde protocol dat we gebruiken om toegang te krijgen tot AWS vanaf onze opdrachtregel, maar we gaan het zo instellen dat we een spiegelpoort op onze lokale computer maken die verbinding maakt met een specifieke poort op onze AWS-instantie. Op die manier, wanneer we de poort lokaal oproepen, bijvoorbeeld door de browser te openen voor http: // localhost: 3000, we kijken eigenlijk naar de 3000-poort op onze AWS-instantie.

Om dit goed te doen, heb je je SSH-sleutel voor AWS en de AWS IP-informatie nodig. U moet ook weten op welke poort u verbinding wilt maken. In dit geval weten we dat onze Grafana-instantie op poort 3000 draait, dus de opdrachtregelinstructies hebben deze generieke structuur:

ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Code taal: CSS (css)

Hierdoor kunnen we naar http: // localhost: 3000 op onze lokale machine en bekijk ons ​​Grafana-dashboard. Maar we hebben er nog geen, dus we moeten het volgende doen:

Prometheus toevoegen als gegevensbron:

Ga naar ‘nieuwe gegevensbron toevoegen’

Klik op “Prometheus” in de vervolgkeuzelijst

Klik op “Opslaan en testen”

Klik op + in het linkermenu en selecteer ‘dashboard importeren’

Teku Grafana ID toevoegen: 13457

En bada-bing! We hebben ons dashboard, zichtbaar vanuit het comfort van onze eigen browser:

Beaconcha.in App

Het Grafana-dashboard is uitstekend en Prometheus slaat informatie voor ons op. Er zijn echter andere opties om de validatorstatus te controleren.

Ik heb gebruikt Beaconcha.in Dashboard mobiele app voor Android. Het is een eenvoudige interface, en dat is prima, want het is niet mijn primaire controleservice. Hiermee kan ik snel naar mijn telefoon kijken om de validatorstatus te controleren en krijg ik meldingen als er iets mis is met de validator.

U voert het validatie-adres in dat u wilt bekijken en dat is het zo ongeveer! Nogmaals, geen zware monitoring (dat is wat de Grafana Teku-feed biedt). Maar het is prima als secundaire service en binair “werkt de validator of niet”:

Het opvragen van het knooppunt

Een andere manier om onze Ethereum-validatorclient te ‘monitoren’ is door er naar te zoeken! Net als een Ethereum 1.0-client slaat onze Ethereum-validator-client een wereldstaat op en handhaaft deze. Het is veel kleiner in vergelijking met Ethereum 1.0, maar het zijn nog steeds on-chain gegevens die worden opgeslagen en onderhouden door uw validator-client. 

Dit zijn dezelfde gegevens die worden gebruikt door de Prometheus / Grafana-workflow. We komen simpelweg dichter bij het metaal (virtueel gesproken) door zelf het knooppunt te bevragen. Hier is een voorbeeld van de beschikbare gegevens (volledige lijst hier

  • Beacon-kettinginformatie (genesisblok, block headers en root, etc.)
  • Validator-informatie (lijst met validators, validatorsaldo, validatorverantwoordelijkheden, enz.)
  • Knooppuntinformatie (algemene gezondheid, lijst met peers, etc.)

krullen

De eerste manier om dit te doen is vanaf de opdrachtregel. Toen we Teku startten, hebben we de vlag –rest-api-enabled = true toegevoegd. Dit opent een API-eindpunt op de standaardpoort van 5051 (u kunt een andere poort specificeren door de vlag –rest-api-port = te gebruiken). U kunt controleren of uw poort open is door sudo lsof -i -P -n | uit te voeren grep LUISTER.

Zodra u heeft bevestigd dat poort 5051 door Teku is geopend, gebruiken we krullen versturen RUST UIT aanroepen naar het Teku API-eindpunt op http: // localhost: 5051. Dit is bijvoorbeeld de manier waarop we het saldo van de best presterende validator controleren (volgens Beaconcha.in):

krul -X GET "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"Code taal: PHP (php)

Hier is het antwoord dat ik medio januari 2021 kreeg (in Gwei): 

​"gegevens"​"inhoudsopgave"​"4966","balans"​"32607646851"}]} Codetaal: JSON / JSON met opmerkingen (json)

Probeer een van de methoden uit op de Teku API-documentpagina met behulp van het formaat onderaan deze pagina:

curl -X [REST_METHOD] “API_CALL_IN_QUOTES” Codetaal: CSS (css)

Swagger UI

Er is een eenvoudige grafische gebruikersinterface voor API-aanroepen die Teku biedt wanneer de vlag –rest-api-docs-enabled = true wordt toegevoegd aan de opstartopdrachten. Het is gebouwd op branie-ui en het is standaard op poort 5051 en we kunnen SSH-tunneling gebruiken om er toegang toe te krijgen. Volg dezelfde SSH-tunnelingstappen van bovenaf, maar met 5051 als de poort:

ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Code taal: CSS (css)

Vanuit de browser op onze computer kunnen we vervolgens navigeren naar http: // localhost: 5051 / swagger-ui, die er zo uitziet op mijn machine:

Wereldstaat en consensus is iets dat opkomt in alle openbare blockchains. Dit betekent dat Ethereum 2.0 consensus bereikt bij alle validators die informatie opslaan en bijwerken. Het is een beetje nerdy, maar als je in je lokale staat kijkt, kijk je in een enkel paneel van een veel grotere structuur. Een subset van de fractal die voortdurend wordt bijgewerkt en opduikt in iets nieuws. Probeer het!

Financiële analyse

In mijn eerste bericht schetste ik de basismateriaalvereisten die nodig zijn:

  • Een verbintenis van drie jaar om 32 ETH uit te zetten en een validatorknooppunt te onderhouden
  • 32 ETH (plus <1 ETH voor gaskosten)
  • $ 717,12 (prijs voor gereserveerde instanties voor drie jaar voor een m5.xlarge-instantie) + 120 (kosten voor één jaar van 100 GB opslag, conservatief uitgaande van bijna volledige opslagcapaciteit) = $ 837,12 betaald in de loop van het jaar aan AWS
  • MetaMask-extensie (gratis te installeren​ 
  • Infura-account (gratis niveau

De AWS-kosten waren voor een driejarige lock-in, maar ik zei later dat ik daar nog niet helemaal klaar voor was. En ik ben blij dat ik dat niet gedaan heb! U zult meteen zien waarom, maar hier is mijn basisoverzicht van de kosten voor de maand 31 december 2020:

AWS maandelijkse kosten

  • Gegevensoverdracht: $ 8,52
  • Server: $ 142,85
  • Opslagruimte: $ 72,50
  • Totaal: $ 223,87

Eth2 Validator-beloningen 

  • Blokken: 5
  • Attesten: ~ 6.803
  • ETH-beloningen: 0,420097728 ($ 485,83 USD)

Zoals u waarschijnlijk kunt zien, is een winst van $ 261,96 geen goede spreiding voor één validator. Er zijn een aantal opties: dit zijn relatief stabiele kosten, dus ik zou nog eens 32 ETH kunnen inzetten. De betere optie is misschien om de VPS die ik gebruik, die ik in mijn eerste bericht noemde, te wijzigen, eigenlijk:

Aanvankelijk had ik er vertrouwen in dat AWS het beste virtuele platform was en dat dit de service is die ik voor deze post en de volgende zal gebruiken. Nadat ik het hele proces had doorlopen, realiseerde ik me echter dat AWS misschien een overkill is voor de individuele ontwikkelaar. De echte kracht van AWS lijkt het vermogen te zijn om dynamisch op te schalen om aan de vraag te voldoen, die hoge kosten met zich meebrengt. Dit is economisch zinvol voor een grootschalig project op bedrijfsniveau, maar individuele Ethereum 2.0 huidige klantvereisten vereisen niet zo’n strengheid.

Ik ga door met AWS, maar geniet ook van de mogelijkheid om een ​​instantie op Digital Ocean uit te voeren, wat wellicht geschikter is voor een individuele ontwikkelaar. 

Ik denk dat ik veel meer winst kan halen uit het draaien op Digital Ocean en toch geen klap kan krijgen voor mijn validatorprestaties. Een vriend voert een validator-instantie uit op een veel kleinere VPS die een orde van grootte minder kost en we hebben dezelfde validatorprestaties. 

Het is geweldig om met AWS te experimenteren en ik heb er geen spijt van dat ik de capaciteit heb voor het geval er iets zijwaarts op de bakenketting gaat. Ik denk echter van wel werkelijk geweldig dat de ontwikkelaars van Eth 2 de belofte waarmaken om validatie beschikbaar te maken vanaf thuisnetwerken en opstellingen! 

De huidige prijsmodulaties maken financiële analyse ook moeilijk, aangezien de serverkosten worden vastgesteld in USD, maar de beloningen fluctueren. Op de lange termijn heb ik er alle vertrouwen in dat mijn validator-beloningen in waarde zullen stijgen. Het maakt de kosten-batenverhouding lastig!

Voor de laatste aflevering van deze serie zal ik bespreken hoe u veilig en (hopelijk) met succes een Teku-knooppunt van de ene server naar de andere kunt migreren. Het belangrijkste probleem is natuurlijk dat er wordt gesneden. Het lijkt erop dat de overgrote meerderheid van de slashings die hebben plaatsgevonden vanwege dit probleem. We zullen zien hoe het gaat …

Ontwikkelaars Ethereum 2.0 Ethereum Client Nieuwsbrief Abonneer u op onze nieuwsbrief voor het laatste Ethereum-nieuws, bedrijfsoplossingen, bronnen voor ontwikkelaars en meer.

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