Ethereum archív csomópont
Utolsó módosítás: @Satglow(opens in a new tab), 2023. október 24.
Az archív csomópont az Ethereum-kliens egy fajtája, melynek lényege, hogy az összes státuszt tárolja. Ez egy hasznos eszköz bizonyos célokra, de nehezebb kezelni, mint egy teljes csomópontot.
Előfeltételek
Meg kell érteni az Ethereum-csomópont, architektúráját, a szinkronizációs stratégiáig, futtatási gyakorlatát és használatukat.
Mi is az az archív csomópont
Az archív csomópont lényegéhez meg kell érteni, hogy mit jelent a státusz. Az Ethereumot úgy is nevezhetjük, hogy tranzakcióalapú státuszgép. Számlákból áll, és amikor az alkalmazások tranzakciókat hajtanak végre, akkor megváltozik ezek státusza. Az a globális adat, mely lefedi az összes számla- és szerződésinformációt, egy státusznak nevezett fastruktúrájú adatbázisban tárolódik. Ezt a végrehajtási réteg (EL) kliense kezeli, és a következő adatokat tárolja el:
- Számlaegyenlegek és nonce-ok
- Szerződéskód és tárhely
- Konszenzussal kapcsolatos adatok, pl. a letétbe helyezési szerződés
A hálózattal való interakció, az új blokkok ellenőrzése és létrehozása végett az Ethereum-klienseknek követniük kell a legutóbbi változásokat (a lánc elejét), így ezért a jelenlegi státuszt is. A teljes csomópontként konfigurált végrehajtási réteg kliense ellenőrzi és követi a hálózat legutóbbi státuszát, de csak néhány státuszt kap el, pl. a legutóbbi 128 blokkét, így képes kezelni a láncátrendezéseket és gyors hozzáférést tud biztosítani a legutóbbi adatokhoz. A legfrissebb státuszra van szüksége minden kliensnek, hogy ellenőrizze a bejövő tranzakciókat és használja a hálózatot.
Úgy is felfoghatjuk a státuszt, mint egy pénzügyi rendszer pillanatfelvétele egy adott blokknál, az archív pedig a történeti visszajátszás.
Az előzménystátuszokat biztonsággal meg lehet vágni, mert azok nem szükségesek a hálózat működéséhez, és a kliens számára haszontalan lenne a nem releváns adatok tárolása. Azokat a státuszokat, melyek egy bizonyos blokknál korábban keletkeztek (pl. 128 blokkal korábban), egyszerűen törlik. A teljes csomópontok csak blokklánc-előzményadatokat (blokkok és tranzakciók) tartanak meg, valamint esetenként korábbi pillanatfelvételeket is, amelyek alapján újragenerálhatják a régebbi státuszokat, ha azokra szükség lenne. Ehhez az EVM-ben újra lefuttatják a régi tranzakciókat, amihez sok számítási kapacitás kellhet, ha a szükséges státusz távol esik a legközelebbi pillanatfelvételtől.
Tehát a historikus státuszok elérése egy teljes csomópont esetén számottevő számítási kapacitást fogyaszt. A kliensnek talán az összes régi tranzakciót le kell futtatnia, és a genezistől kezdve ki kell számolnia az előzménystátuszt. Az archív csomópontok úgy oldják meg ezt, hogy nemcsak a legutóbbi státuszokat tárolják, hanem minden előzménystátuszt is, amely minden egyes blokk után keletkezik. Alapvetően ez egy kompromisszum, mert a számítási kapacitás helyett ehhez nagyobb tárhely szükséges.
Fontos megjegyezni, hogy a hálózat nem az archív csomópontoktól függ, hogy azok megtartsák és biztosítsák az összes előzményadatot. Ahogy már említettük, a teljes csomópontok minden köztes előzménystátuszt meg tudnak mutatni. A tranzakciókat mindegyik teljes csomópont tárolja (jelenleg kisebb mint 400 G), és vissza tudja azokat játszani ahhoz, hogy egy teljes archívumot felépítsen belőlük.
Felhasználási módok
Az Ethereum általános használata, mint a tranzakciók küldése, a szerződések létrehozása, a konszenzus ellenőrzése stb. nem igényel semmilyen előzményadatot. A felhasználóknak nincs szükségük archív csomópontra ahhoz, hogy interakciókat hajtsanak végre a hálózattal.
A státuszarchívumok fő haszna az előzménystátuszok gyors elérése. Például az archív csomópont azonnal megadja az eredményt a következő kérdésekre:
- Mi volt az ETH egyenlege a 0x1337... számlának a 15 537 393. blokknál?
- Mi az egyenlege a 0x tokennek a 0x szerződéseben az 1 920 000. blokknál?
Ahogy felvázoltuk, a teljes csomópont ezt az adatot az EVM végrehajtással tudja előállítani, ami CPU-t és időt igényel. Az archív csomópontok a merevlemezen érik el és azonnal meg tudják azt adni. Ez egy hasznos jellemző az infrastruktúra bizonyos részeinek, például:
- Szolgáltatásnyújtók, mint a blokk felfedezők
- Kutatók
- Biztonsági elemzők
- Dapp-fejlesztők
- Auditálás és a szabályoknak való megfelelés
Számtalan ingyenes szolgáltatás van, ami hozzáférést enged az előzményadatokhoz. Mivel nagyobb teherrel jár egy archív csomópont futtatása, ez a hozzáférés általában korlátozott és esetileg működik. Ha egy projekt állandó hozzáférést igényel az előzményadatokhoz, akkor érdemes saját archív csomópontot futtatnia.
Telepítés és használat
Az archív csomópont ebben a kontextusban azt jelenti, hogy a végrehajtási kliensek adatot szolgáltatnak, mert kezelik a státuszadatbázist és JSON-RPC végpontokat biztosítanak. A konfigurációs lehetőségek, a szinkronizálási idő és az adatbázis mérete kliensenként változik. A részletekkel kapcsolatos részletekért, kérjük, tekintse át az Ön által használt kliens dokumentációját.
Mielőtt egy archív csomópontot kezdene futtatni, tekintse át a kliensek közötti különbségeket, elsősorban a különböző hardverszükségleteket. A legtöbb kliensben ez a funkció nincs optimalizálva, így az archív változataik több mint 12 TB helyet igényelnek. Ezzel ellentétben az olyan implementáció, mint amilyen az Erigon, képes ugyanazt az adatot kevesebb mint 3 TB helyen tárolni, ami az archív csomópontok esetében a leghatékonyabbá teszi őket.
Bevált gyakorlatok
Azon túl, amit általános javaslatként megfogalmaznak a csomópont futtatásához, az archív csomópont működtetése többet igényelhet a hardver és a fenntartás szempontjából. Figyelembe véve az Erigon fő jellemzőit(opens in a new tab), a leghasznosabb megközelítés egy Erigon-kliens létrehozása lenne.
Hardver
Mindig ellenőrizze az egy adott csomópontra vonatkozó hardverigényeket a kliens dokumentációjában. Az archív csomópontok legnagyobb igénye a tárhely. A klienstől függően ez 3 és 12 TB között változhat. A HDD jobb lenne a nagymennyiségű adatok tárolásához, de a szinkronizálás és a lánc elejének állandó frissítése SSD-meghajtókat igényel. A SATA(opens in a new tab) meghajtók elég jók, de abból is a megbízható minőségű javasolt, vagyis legalább a TLC(opens in a new tab). A lemezek elég lemezhellyel rendelkező asztali gépbe vagy szerverbe is behelyezhetők. Ezek a dedikált eszközök ideálisak egy ilyen, szinte állandóan aktív csomópont futtatásához. Laptopon is futtatható, de a hordozhatóság több költséggel jár.
Az összes adatnak egy köteten el kell férnie, ezért a lemezeket össze kell kapcsolni, pl. a RAID0(opens in a new tab) vagy a LVM(opens in a new tab) által. Érdemes lehet megfontolni a ZFS(opens in a new tab) használatát is, mert ez támogatja az írásra másolás (copy-on-write) funkciót, amivel az adat biztosabban, alacsony szintű hiba nélkül íródik a lemezre.
A nagyobb stabilitás érdekében és a véletlen adatbázis-meghibásodás megelőzésére, főleg a professzionális összeállításban, érdemes ECC-memóriát(opens in a new tab) használni, ha azt a rendszer is támogatja. A RAM méretének általában akkorának kell lennie, mint egy teljes csomópont esetében, de az ennél több RAM csak segíthet a szinkronizálás gyorsításában.
A kezdeti szinkronizáláskor az archív csomópont kliensei lefuttatják az összes tranzakciót a genezistől kezdve. A végrehajtási sebességet a CPU korlátozza, tehát a gyorsabb CPU segít a kezdeti szinkronizáláskor. Egy átlagos számítógépen a kezdeti szinkronizálás egy hónapig is eltarthat.
További olvasnivaló
- A teljes és az archív csomópont összehasonlítása az Ethereumon(opens in a new tab) – QuickNode, 2022. szeptember
- Építsen saját Ethereum archív csomópontot(opens in a new tab) – Thomas Jay Rush, 2021. augusztus
- Hogyan kell felállítani az Erigont, Erigon RPC-t és TrueBlocks-t (scrape és API) szolgáltatásként(opens in a new tab) – Magnus Hansson, frissítve 2022. szeptember