Przejdź do głównej zawartości
Change page

Węzły i klienci

Ostatnia edycja: , 26 lutego 2024

Aby Ethereum działało w sposób zdecentralizowany, potrzebuje rozproszonej sieci węzłów, która może weryfikować bloki i dane transakcji. Potrzebujesz aplikacji znanej jako klient, aby „uruchomić węzeł”.

Wymagania wstępne

Powinieneś zrozumieć koncepcję zdecentralizowanej sieci, zanim zagłębisz się w nią i uruchomisz własną instancję klienta Ethereum. Spójrz na nasze wprowadzenie do Ethereum.

Czym są węzły i klienci?

„Węzeł” odnosi się do oprogramowania znanego jako klient. Klient jest implementacją Ethereum, która za zadanie ma weryfikację wszystkich transakcji w kolejnych blokach, utrzymywać bezpieczeństwo sieci i poprawność danych.

Możesz zobaczyć widok sieci Ethereum w czasie rzeczywistym, patrząc na mapę węzłów(opens in a new tab).

Wiele implementacji klientów Ethereum istnieje w wielu językach. Cechą wspólną tych implementacji klienckich jest to, że wszystkie są zgodne z formalną specyfikacją. Ta specyfikacja określa, jak działa sieć Ethereum i blockchain.

Klient Eth1x Uproszczony schemat funkcji klienta Ethereum.

Typy węzłów

Jeśli chcesz uruchomić swój własny węzeł, powinieneś zrozumieć, że istnieją różne typy węzłów, które zużywają dane w inny sposób. W rzeczywistości klienci mogą uruchamiać 3 różne typy węzłów — lekki, pełny i archiwalny. Istnieją również opcje różnych strategii synchronizacji, które umożliwiają szybszą synchronizację. Synchronizacja odnosi się do tego, jak szybko może uzyskać najbardziej aktualne informacje o stanie Ethereum.

Pełny węzeł

  • Przechowuje pełne dane blockchainu.
  • Uczestniczy w walidacji bloków, weryfikuje wszystkie bloki i stany.
  • Wszystkie stany mogą pochodzić z pełnego węzła.
  • Obsługuje sieć i dostarcza dane na żądanie.

Lekki węzeł

  • Przechowuje łańcuch nagłówków i żąda wszystkiego innego.
  • Potrafi zweryfikować poprawność danych względem korzeni stanu w nagłówkach bloków.
  • Przydatne dla urządzeń o niskiej przepustowości, takich jak urządzenia wbudowane lub telefony komórkowe, które nie stać na przechowywanie gigabajtów danych blockchainu.

Węzeł archiwum

  • Przechowuje wszystko w pełnym węźle i buduje archiwum stanów historycznych. Potrzebne, jeśli chcesz zapytać o coś takiego jak saldo konta w bloku #4 000,000.
  • Dane te reprezentują jednostki terabajtów, co sprawia, że ​​węzły archiwów są mniej atrakcyjne dla przeciętnych użytkowników, ale mogą być przydatne w przypadku usług takich jak eksploratory bloków, dostawcy portfeli i analizy łańcuchów.

Synchronizowanie klientów w dowolnym trybie innym niż archiwum spowoduje wyczyszczenie danych łańcucha bloków. Oznacza to, że nie ma archiwum wszystkich stanów historycznych, ale cały węzeł jest w stanie budować je na żądanie.

Dlaczego należy uruchomić węzeł Ethereum?

Uruchomienie węzła pozwala Ci bezspornie i prywatnie korzystać z Ethereum podczas wspierania ekosystemu.

Korzyści dla Ciebie

Prowadzenie własnego węzła umożliwia korzystanie z Ethereum w sposób naprawdę prywatny, samowystarczalny i pozbawiony zaufania. Nie musisz ufać sieci, ponieważ możesz samodzielnie zweryfikować dane ze swoim klientem. „Nie ufaj, sprawdź” jest popularną mantrą blockchainu.

  • Twój węzeł samodzielnie weryfikuje wszystkie transakcje i bloki pod kątem zasad konsensusu. Oznacza to, że nie musisz polegać na żadnych innych węzłach w sieci ani w pełni im zaufać.
  • Nie będziesz musiał ujawniać swoich adresów i sald do przypadkowych węzłów. Wszystko można sprawdzić z własnym klientem.
  • Twoja zdecentralizowana aplikacja może być bezpieczniejsza i bardziej prywatna, jeśli używasz własnego węzła. MetaMask(opens in a new tab), MyEtherWallet(opens in a new tab) i kilka innych portfeli można łatwo skierować na swój własny lokalny węzeł.

Jak uzyskać dostęp do Ethereum za pośrednictwem aplikacji i węzłów

Korzyści dla sieci

Różnorodny zestaw węzłów jest ważny dla zdrowia, bezpieczeństwa i odporności operacyjnej Ethereum.

  • Zapewniają one dostęp do danych blockchainu dla niewielkich klientów, którzy od niego zależą. W szczytowych okresach użytkowania musi być wystarczająca liczba pełnych węzłów, aby ułatwić synchronizację lekkich węzłów. Lekkie węzły nie przechowują całego łańcucha bloków, zamiast tego weryfikują dane za pomocą głównych stanów w nagłówkach bloków. Mogą żądać więcej informacji od bloków, jeśli ich potrzebują.
  • Pełne węzły wymuszają reguły konsensusu proof-of-work, więc nie można ich oszukać w celu zaakceptowania bloków, które ich nie przestrzegają. Zapewnia to dodatkowe bezpieczeństwo w sieci, ponieważ jeśli wszystkie węzły były lekkimi węzłami, które nie przeprowadzają pełnej weryfikacji, górnicy mogą zaatakować sieć i na przykład tworzyć bloki z wyższymi nagrodami.

Jeśli uruchomisz pełny węzeł, korzysta z niego cała sieć Ethereum.

Uruchamianie własnego węzła

Projekty

Wybierz klienta i postępuj zgodnie z jego instrukcjami

ethnode — uruchom węzeł Ethereum (Geth lub Parity) do celów rozwoju lokalnego.

DAppNode — system operacyjny do uruchamiania węzłów Web3, w tym Ethereum, na dedykowanym komputerze.

Źródła

Alternatywy

Uruchamianie własnego węzła może być trudne i nie zawsze musisz uruchamiać własną instancję. W tym przypadku możesz użyć zewnętrznego dostawcy API, takiego jak Infura(opens in a new tab), Alchemia(opens in a new tab) lub QuikNode(opens in a new tab). Alternatywnie ArchiveNode(opens in a new tab) to wspierany przez społeczność węzeł archiwizacji, który ma nadzieję na przekazanie danych archiwalnych w blockchain Ethereum niezależnym programistom, którzy w przeciwnym razie nie mogli sobie na nie pozwolić.

Jeśli ktoś uruchamia węzeł Ethereum z publicznym API w Twojej społeczności, możesz wskazać swoje lekkie portfele (takie jak MetaMask) do węzła społeczności za pośrednictwem niestandardowego RPC(opens in a new tab) i zyskać większą prywatność niż korzystając z zaufanej trzeciej strony.

Z drugiej strony, jeśli uruchamiasz klienta, możesz podzielić się nim ze znajomymi, którzy mogą tego potrzebować.

Klienci

Ethereum jest zaprojektowany do oferowania różnych klientów, stworzonych przez różne zespoły przy użyciu różnych języków programowania. Dzięki temu sieć jest silniejsza i bardziej zróżnicowana. Idealnym celem jest osiągnięcie różnorodności bez zdominowania przez żadnego klienta w celu zmniejszenia pojedynczych punktów niepowodzenia.

W tabeli przedstawiono podsumowanie poszczególnych klientów. Wszystkie z nich są aktywnie opracowywane, utrzymywane i przechodzą testy klienckie(opens in a new tab).

KlientJęzykSystemy operacyjneSieciStrategie synchronizacjiWycinanie stanu
Geth(opens in a new tab)GoLinux, Windows, macOSMainnet, Görli, Rinkeby, RopstenSzybka, pełnaArchive, Pruned
OpenEthereum(opens in a new tab)RustLinux, Windows, macOSMainnet, Kovan, Ropsten i więcejWarp, pełnaArchive, Pruned
Nethermind(opens in a new tab)C#, .NETLinux, Windows, macOSMainnet, Görli, Ropsten, Rinkeby I więcejSzybka, pełnaArchive, Pruned
Besu(opens in a new tab)JavaLinux, Windows, macOSMainnet, Rinkeby, Ropsten, i GörliSzybka, pełnaArchive, Pruned
Trinity(opens in a new tab)PythonLinux, macOSMainnet, Görli, Ropsten, Rinkeby i więcejPełna, wiązka, szybka/nagłówekArchive

Więcej informacji o obsługiwanych sieciach znajdziesz w rozdziale Sieci Ethereum.

Zalety różnych implementacji

Każdy klient ma unikalne przypadki i zalety, więc powinieneś wybrać jeden na podstawie własnych preferencji. Różnorodność pozwala implementacjom skupić się na różnych funkcjach i odbiorcach. Możesz wybrać klienta na podstawie funkcji, wsparcia, języka programowania lub licencji.

Go Ethereum

Go Ethereum (w skrócie Geth) jest jedną z oryginalnych implementacji protokołu Ethereum. Obecnie jest to najbardziej rozpowszechniony klient z największą bazą użytkowników i różnorodnością narzędzi dla użytkowników i programistów. Jest napisany w Go, w pełni open source i licencjonowany na mocy GNU LGPL v3.

OpenEthereum

OpenEthereum jest szybkim, bogatym w funkcje i zaawansowanym klientem Ethereum opartym na CLI. Został zbudowany w celu zapewnienia niezbędnej infrastruktury dla szybkich i niezawodnych usług, które wymagają szybkiej synchronizacji i maksymalnego czasu pracy. Celem OpenEthereum jest być najszybszy, najlżejszy i najbezpieczniejszy klient Ethereum. Zapewnia czystą, modułową bazę kodową pozwalającą na:

  • łatwe dostosowywanie.
  • łatwą integrację z usługami lub produktami.
  • minimalną ilość pamięci i miejsca przechowywania.

OpenEthereum jest rozwijany przy użyciu najnowocześniejszego języka programowania Rust i licencjonowanego na licencji GPLv3.

Nethermind

Nethermind to implementacja Ethereum stworzona za pomocą stosu technologicznego C# .NET, działająca na wszystkich głównych platformach, w tym ARM. Oferuje ona wspaniałe wyniki dzięki:

  • zoptymalizowanej maszynie wirtualnej
  • dostępowi do stanu
  • funkcjom sieciowym i bogatym funkcjom, takim jak pulpity nawigacyjne Prometheus/Graphana, obsługa rejestrowania sekwencyjnego dla przedsiębiorstw, śledzenie RPC JSON i wtyczki analityczne.

Nethermind ma również dokładną dokumentację(opens in a new tab), silne wsparcie dla programistów, społeczność online i wsparcie 24/7 dostępne dla użytkowników premium.

Besu

Hyperledger Besu to klient Ethereum klasy korporacyjnej dla sieci publicznych i autoryzowanych. Obsługuje wszystkie funkcje sieci głównej Ethereum, od śledzenia do GraphQL, ma rozbudowany monitoring i jest obsługiwany przez ConsenSys, zarówno w otwartych kanałach społecznościowych, jak i poprzez komercyjne umowy SLA dla przedsiębiorstw. Jest napisany w Java i jest licencjonowany Apache 2.0.

Tryb synchronizacji

  • Pełna – pobiera wszystkie bloki (w tym nagłówki, transakcje i paragony) i generuje stan łańcucha bloków stopniowo poprzez wykonanie każdego bloku.
  • Szybka (domyślna) – pobiera wszystkie bloki (w tym nagłówki, transakcje i paragony), weryfikuje wszystkie nagłówki i pobiera stan i weryfikuje go w nagłówkach.
  • Lekki – pobiera wszystkie nagłówki bloków, dane bloków i weryfikuje niektóre losowo.
  • Synchronizacja warp – co 5000 bloków, węzły wykonają migawkę o krytycznym znaczeniu dla konsensusu. Każdy węzeł może pobrać te zrzuty w sieci, umożliwiając szybką synchronizację. Więcej o warp(opens in a new tab)
  • Synchronizacja beam – tryb synchronizacji, który umożliwia szybsze działanie. Nie wymaga długich oczekiwań na synchronizację, zamiast tego wypełnia dane z upływem czasu. Więcej o beam(opens in a new tab)
  • Synchronizacja nagłówka – możesz użyć zaufanego punktu kontrolnego, aby rozpocząć synchronizację od nowszego nagłówka, a następnie pozostawić to procesowi w tle, aby ostatecznie wypełnić luki

Typ synchronizacji określasz podczas konfiguracji, na przykład:

Konfigurowanie synchronizacji lekkiej w GETH(opens in a new tab)

geth --syncmode "light"

Konfigurowanie synchronizacji nagłówka w Trinity

trinity --sync-from-checkpoint eth://block/byhash/0xa65877df954e1ff2012473efee8287252eee956c0d395a5791f1103a950a1e21?score=15,835,269,727,022,672,760,774

Sprzęt

Wymagania sprzętowe różnią się w zależności od klienta, ale zazwyczaj nie są wysokie, ponieważ węzeł musi po prostu pozostać zsynchronizowany. Nie należy mylić tego z wydobywaniem, które wymaga dużo większej mocy obliczeniowej. Jednak czas synchronizacji i wydajność poprawiają się dzięki mocniejszemu sprzętowi. W zależności od Twoich potrzeb i pragnień, Ethereum można uruchomić na Twoim komputerze, serwerze domowym, komputerach jednopłytowych lub wirtualnych serwerach prywatnych w chmurze.

Prostym sposobem na uruchomienie własnego węzła jest użycie wtyczek „plug and play”, takich jak DAppNode(opens in a new tab). Zapewnia sprzęt do uruchamiania klientów i aplikacji od nich zależnych z prostym interfejsem użytkownika.

Wymagania

Przed zainstalowaniem klienta upewnij się, że komputer ma wystarczającą ilość zasobów, aby go uruchomić. Poniżej znajdują się minimalne i zalecane wymagania, jednak kluczowym elementem jest przestrzeń dyskowa. Synchronizacja blockchainu Ethereum jest bardzo intensywna pod kątem wejścia/wyjścia. Najlepiej mieć dysk półprzewodnikowy (SSD). Aby uruchomić klienta Ethereum na dysku twardym, potrzebujesz co najmniej 8 GB pamięci RAM jako pamięci podręcznej.

  • Procesor z 2+ rdzeniami
  • Minimum 4 GB RAM z SSD, 8 GB+ jeśli masz HDD
  • Przepustowość 8 Mbit/s
  • Szybki procesor z ponad 4 rdzeniami
  • 16 GB+ RAM
  • Szybki SSD z co najmniej 500 GB wolnego miejsca
  • 25+ Mbit/s przepustowość

W zależności od tego, które oprogramowanie i tryb synchronizacji mają być używane, potrzebne są setki GB przestrzeni dyskowej. Przybliżone wartości i wzrost można znaleźć poniżej.

KlientRozmiar dysku (szybka synchronizacja)Rozmiar dysku (pełne archiwum)
Klient Ethereum400 GB+4,7 TB+
OpenEthereum280 GB+4,6 TB+
Nethermind200 GB+3 TB+
Besu750 GB+4 TB+

Te wykresy pokazują, jak zawsze zmieniają się wymagania dotyczące przechowywania. Aby uzyskać najbardziej aktualne dane dla Geth i Parity, zobacz pełną synchronizację danych(opens in a new tab) i archiwum danych synchronizacji(opens in a new tab).

Ethereum na komputerze jednopłytowym

Najbardziej wygodnym i tanim sposobem uruchomienia węzła Ethereum jest korzystanie z jednego komputera z architekturą ARM jak Raspberry Pi. Ethereum na ARM(opens in a new tab) dostarcza obrazy klientów Geth, Parity, Nethereumd i Besu. Oto prosty samouczek jak zbudować i skonfigurować klienta ARM.

Małe, niedrogie i wydajne urządzenia, takie jak te, są idealne do uruchomienia węzła w domu.

Klienci Eth2

Pojawili się nowi klienci obsługujący aktualizacje Eth2. Będą obsługiwać łańcuch śledzący i wspierać nowy mechanizm konsensusu proof-of-stake.

Dalsza lektura

W Internecie jest wiele instrukcji i informacji o klientach Ethereum, tutaj jest kilka, które mogą być pomocne.

Czy ten artykuł był pomocny?