Proof-of-stake (PoS)
Utolsó módosítás: @Satglow(opens in a new tab), 2024. szeptember 3.
Az Ethereum konszenzusmechanizmusa a proof-of-stake (PoS) koncepción alapul. Az Ethereum 2022-ben váltott a proof-of-stake mechanizmusra, mivel biztonságosabb, kevésbé energiaintenzív és jobban megfelel az új méretezési megoldások bevezetéséhez, mint a korábbi proof-of-work architektúra.
Előfeltételek
Az oldal könnyebben megértéséhez javasoljuk, hogy tekintse meg a konszenzusmechanizmusok cikket.
Mi az a proof-of-stake (PoS)?
A proof-of-stake (letéti igazolás) egy módszer annak bizonyítására, hogy a validátorok valamilyen értéket helyeztek a hálózatba, amely tisztességtelen cselekedet esetén megsemmisíthető. Az Ethereum proof-of-stake mechanizmusánál a validátorok ETH formájában zárolják tőkéjüket az Ethereumon található okosszerződésben. A validátor feladata annak ellenőrzése, hogy a hálózaton keresztül terjesztett új blokkok érvényesek, és adott esetben ő maga is új blokkokat hoz létre és terjeszt elő. Ha megpróbálják meghamisítani a hálózatot (például egy helyett több blokkot javasolnak, vagy egymásnak ellentmondó tanúsításokat küldenek), a letétbe helyezett ETH egy része vagy egésze megsemmisülhet.
Validátorok
A validátorként való részvételhez a felhasználónak 32 ETH-t kell egy letéti szerződésben zárolnia, és három különböző szoftvert kell futtatnia: egy végrehajtási klienst, egy konszenzusos klienst és egy validátorklienst. Az ETH letétbe helyezésével a felhasználó beáll egy aktiválási sorba, amely korlátozza az új validátorok hálózathoz való csatlakozásának ütemét. Az aktiválást követően a validátorok új blokkokat kapnak a társaiktól az Ethereum-hálózaton. A blokkban szállított tranzakciókat újra végrehajtják, hogy ellenőrizzék, hogy az Ethereum státuszában javasolt változások érvényesek-e, és ellenőrzik a blokk aláírását. A validátor ezután szavazatot (ún. tanúsítást) ad le az adott blokkra a hálózaton keresztül.
Amíg a proof-of-work esetében a blokkidőt a bányászati nehézség határozza meg, addig a proof-of-stake esetén a tempó rögzített. A proof-of-stake Ethereum esetén az idő (12 másodperces) slotokra és korszakokra (egy korszak 32 slotból áll) oszlik. A rendszer minden slotban véletlenszerűen kiválaszt egy validátort a blokk előterjesztésére. Ez a validátor felel az új blokk létrehozásáért és elküldéséért a hálózat többi csomópontja felé. Emellett a rendszer minden slotban véletlenszerűen megválaszt egy a validátorbizottságot, amelynek a szavazatai döntenek az előterjesztett blokk érvényességéről. A validátorok bizottságokra való felosztása fontos a hálózati terhelés kezelhetősége szempontjából. A bizottságok úgy osztják fel a validátorhalmazt, hogy minden aktív validátor minden korszakban tanúsít, de nem minden slotban.
Hogyan kerülnek végrehajtásra a tranzakciók az Ethereum proof-of-stake mechanizmusban
Az alábbiakban egy teljes magyarázatot adunk arról, hogyan hajtanak végre egy tranzakciót az Ethereum proof-of-stake-ben.
- A felhasználó létrehoz és aláír egy tranzakciót a privát kulcsával. Ezt általában egy tárca vagy egy könyvtár, például ether.js(opens in a new tab), web3js(opens in a new tab), web3py(opens in a new tab) stb. kezeli, eközben a háttérben a felhasználó az Ethereum JSON-RPC API segítségével kérést intéz egy csomóponthoz. A felhasználó meghatározza, hogy mennyi gázt fizet borravalóként a validátornak, hogy az felkapja az adott tranzakciót és betegye egy blokkba. A borravalót megkapja a validátor, az alapdíjat pedig elégeti a rendszer.
- A tranzakciót beküldik az Ethereum végrehajtási klienshez, hogy ellenőrizze az érvényességét. Ennek része, hogy a küldőnek van elég ETH összege, hogy végre legyen hajtva a tranzakció és a megfelelő kulccsal írta azt alá.
- Ha a tranzakció érvényes, a végrehajtási kliens a helyi tranzakciógyűjtőjéhez (memóriakészlet, a függő tranzakciók listája) adja és előterjeszti a többi csomópontnak a végrehajtási réteg pletykahálózatán. Amikor a többi csomópont hall a tranzakcióról, akkor azok is beteszik a helyi memóriakészletbe. A haladó felhasználók úgy is dönthetnek, hogy nem a hálózaton terjesztik el a tranzakciójukat, hanem továbbíthatják azt speciális blokképítőknek, mint a Flashbots aukció(opens in a new tab). Ez lehetővé teszi számukra, hogy a tranzakciókat a következő blokkokba szervezzék a maximális profit érdekében (MEV).
- A hálózat egyik validátor-csomópontja az aktuális slot blokkelőterjesztője, amelyet előzőleg a RANDAO segítségével álvéletlenszerűen kiválasztottak. Ez a csomópont felelős az Ethereum blokklánchoz hozzáadandó következő blokk létrehozásáért és továbbításáért, valamint a globális státusz frissítéséért. A csomópont három részből áll: végrehajtási kliens, konszenzusos kliens és validátorkliens. A végrehajtási kliens a tranzakciókat a helyi memóriakészletből egy végrehajtási csomagba rendezi, és helyben végrehajtja őket, hogy státusztváltozást generáljon. Ezt az információt továbbítják a konszenzusos kliensnek, ahol a végrehajtási csomagot egy Beacon-blokk részeként csomagolják be, amely jutalmakra, büntetésekre, súlyos büntetésekre, tanúsításokra stb. vonatkozó információkat is tartalmaz, amelyek lehetővé teszik a hálózat számára, hogy megállapodjon a lánc élén álló blokkok sorrendjében. A végrehajtási és a konszenzusos kliensek közötti kommunikáció részletesebb leírása a A konszenzusos és a végrehajtási kliensek összekapcsolása című cikkben található.
- A többi csomópont az új Beacon-blokkot a konszenzusréteg pletykahálózatán keresztül kapja meg. Átadják azt a saját végrehajtási kliensüknek, ami a tranzakciókat helyben újra végrehajtja, így megbizonyosodnak arról, hogy érvényes a javasolt státuszváltozás. A validátorkliens ezután tanúsítja, hogy a blokk érvényes, és logikailag ez a következő blokk a láncban (vagyis az elágazásválasztási szabályok szerint a legnagyobb tanúsítási súllyal bíró láncra épül). A blokk hozzáadódik a helyi adatbázishoz minden olyan csomópontban, amely tanúsítja azt.
- A tranzakció akkor tekinthető „véglegesítettnek”, ha egy olyan lánc részévé vált, amelyben két ellenőrzőpont között „szupertöbbségi kapcsolat” van. Az ellenőrzési pontok minden korszak kezdetén fordulnak elő, és azért léteznek, mert az aktív tanúsítóknak csak egy részhalmaza tanúsít minden slotban, de az összes aktív tanúsító minden korszakban tanúsít. Ezért csak a korszakok között lehet „szupertöbbségi kapcsolat” (mikor a hálózaton lévő összes letétbe helyezett ETH 66%-a egyetért két ellenőrzőponton).
A véglegesedésről a következő részben találhat bővebb információkat.
Véglegesség
Az elosztott hálózatokon egy tranzakció akkor válik „véglegessé”, amikor egy olyan blokk része lesz, amelyet csak jelentős mennyiségű ETH elégetésével lehet megváltoztatni. A proof-of-stake Ethereum-hálózata ezt az úgynevezett „checkpoint” (ellenőrző pont) blokkokkal éri el. Minden korszak első blokkja egy checkpoint blokk. A validátorok szavaznak az általuk érvényesek tartott checkpoint blokkpárokra. Ha egy checkpoint blokkpár megkapja legalább az összes letétbe helyezett ETH kétharmadát képviselő szavazatmennyiséget, akkor a checkpoint blokkok frissülnek. A kettő közül a későbbi (célblokk) „igazolt” állapotba kerül. A kettő közül a korábbi már igazolt állapotú, mivel az előző korszak „célblokkja” volt. Ez a blokk „véglegesített” állapotba kerül.
Egy véglegesített blokk visszaalakításához egy támadónak legalább a letétbe helyezett összes ETH egyharmadát fel kellene áldoznia. Ennek pontos okát az Ethereum Alapítvány blogposztja(opens in a new tab) részletesen ismerteti. Mivel a véglegességhez kétharmados többség szükséges, egy támadó a teljes ETH-letét egyharmadával szavazva akadályozhatja meg, hogy a hálózat véglegesítse a blokkot. Létezik egy mechanizmus, amellyel védekezni lehet ez ellen: ez az inactivity leak(opens in a new tab) (inaktivitási szivárgás). Akkor aktiválódik, amikor a blokklánc véglegesítése több mint négy korszakon keresztül meghiúsul. Az inactivity leak elszivárogtatja a többség ellen szavazó validátorok ETH-letétjét, ezzel lehetővé teszi, hogy a többség visszaszerezze a kétharmados többséget és véglegesítse a láncot.
Kriptogazdaság-védelem
Egy validátor futtatása elkötelezettséget jelent. A validátortól elvárják, hogy megfelelő hardvert és internetkapcsolatot tartson fenn a blokkvalidálásban és -előterjesztésben való részvételhez. Cserébe a validátor ETH-kifizetést kap (növekszik a letéti egyenlege). Ugyanakkor a validátorként való részvétel új lehetőségeket kínál a felhasználóknak, hogy személyes haszon vagy szabotázs érdekében megtámadják a hálózatot. Ez ellen hat, hogy a validátorok elveszítik az ETH-jutalmakat, ha felhívás esetén nem vesznek részt a validálásban, és a meglévő letétjük is megsemmisülhet, ha becstelenül viselkednek. Két fő viselkedési módot tekintünk rosszhiszeműnek: egy sloton belül több blokk előterjesztése (kétértelműsítés), valamint az ellentmondásos tanúsítások elküldése.
A megvágott ETH-mennyiség azon múlik, hogy ugyanabban az időben hány másik validátor ETH-letétjét vágja még meg a rendszer. Ez az úgynevezett „korrelációs bírság”(opens in a new tab), amelynek mértéke lehet csekély (a letét kb. 1%-a az egyedülálló validátornál), de eredményezheti akár a validátori letét 100%-ának elvesztését is (tömeges megvágási esemény). Egy kényszerített kilépési periódus felénél szabja ki a rendszer, amely egy azonnali bírsággal (legfeljebb 1 ETH) kezdődik az 1. napon, majd korrelációs bírsággal folytatódik a 18. napon, végül a hálózatból való kivetéssel fejeződik be a 36. napon. Kis összegű tanúsítási bírságot kapnak minden nap, mert jelen vannak a hálózaton, de nem adnak le szavazatot. Ez mind azt jelenti, hogy egy koordinált támadás nagyon költséges lenne a támadó számára.
Elágazásválasztás
Amikor a hálózat optimálisan és becsületesen működik, akkor mindig csak egy blokk van a lánc elején, és minden validátor tanúsítja azt. Mindazonáltal lehetséges, hogy hálózati látencia vagy a blokkelőterjesztő kétértelmű javaslata miatt a validátorok eltérően látják a lánc elejét. Ezért a konszenzusklienseknek egy algoritmusra van szükségük, hogy eldöntsék, melyiket részesítsék előnyben. A proof-of-stake Ethereum által használt algoritmus az LMD-GHOST(opens in a new tab), és úgy működik, hogy azonosítja az előzmények szerint a tanúsítások legnagyobb többségét magáénak tudó elágazást (fork).
Proof-of-stake és biztonság
Egy 51%-os támadás(opens in a new tab) veszélye a proof-of-work architektúrához hasonlóan a proof-of-stake konszenzusnál is fennáll, ám itt még kockázatosabb a támadók számára. A támadónak a letétbe helyezett ETH-mennyiség 51%-ára volna szüksége. Így a saját tanúsításai segítségével biztosíthatná, hogy az általa előnyben részesített elágazás (fork) szerezze meg a legtöbb tanúsítást. A felhalmozott tanúsítások „súlya” az, amit a konszenzuskliensek a helyes lánc meghatározásához használnak, tehát ez a támadó képes volna általánosan elfogadottá tenni a saját elágazását. Ugyanakkor a proof-of-work konszenzussal szemben a proof-of-stake erőssége az ellentámadás rugalmas bevezetésében rejlik. Például a becsületes validátorok dönthetnek úgy, hogy tovább építik a kisebbségi láncot, és figyelmen kívül hagyják a támadó elágazását, és ugyanerre biztatják az alkalmazásokat, a tőzsdéket és a poolokat is. Úgy is határozhatnak, hogy erőszakkal eltávolítják támadót hálózatról, és megsemmisítik az ETH-letétjét. Ezek erős gazdaságvédelmet jelentenek az 51%-os támadások ellen.
Az 51%-os támadáson túl a rosszhiszemű szereplők megpróbálhatnak más jellegű káros tevékenységeket, mint amilyen:
- a nagy hatótávolságú támadások (bár a véglegességi eszköz semlegesíti ezt a támadási vektort)
- rövid hatótávolságú „átrendezések” (bár a javaslattevő-erősítése és a tanúsítási határidők kivédik ezt)
- pattogó (bouncing) és a kiegyenlítő (balancing) támadások (szintén mitigálja a javaslattevő-erősítése, és ezeket főleg ideális hálózati körülmények között lehet végrehajtani)
- lavinatámadások (az elágazásválasztási algoritmus szabálya semlegesíti, amely csak az utolsó üzenetet veszi figyelembe)
Összességében a proof-of-stake – ahogy azt az Ethereum megvalósította – gazdasági szempontból bizonyítottan védettebb, mint proof-of-work.
Előnyök és hátrányok
Előnyök | Hátrányok |
---|---|
A letétbe helyezés az egyének számára megkönnyíti a részvételt a hálózat biztosításában, ezzel elősegíti a decentralizációt. Validátor-csomópont egy átlagos laptopon is futtatható. A letéti alapok lehetővé teszik, hogy a felhasználók akkor is részt vegyenek, ha nincs 32 ETH-jük. | A proof-of-stake fiatalabb és még kevésbé tesztelt, mint a proof-of-work. |
A letétbe helyezés decentralizáltabb. A méretgazdaságosság nem úgy érvényesül, mint a PoW-bányászat esetén. | A proof-of-stake esetén a megvalósítás bonyolultabb, mint a proof-of-work konszenzusnál. |
A proof-of-stake erősebb kriptogazdasági védelmet kínál, mint a proof-of-work. | A felhasználóknak három szoftvert kell futtatniuk, hogy részt vehessenek az Ethereum proof-of-stake konszenzusában. |
Kevesebb új ETH-t kell kibocsátani a hálózati résztvevők ösztönzéséhez. |
Összehasonlítása a proof-of-work mechanizmussal
Az Ethereum eredetileg proof-of-work mechanizmust használt, amelyről proof-of-stake mechanizmusra váltott 2022 szeptemberében. A PoS számos előnnyel jár a PoW-vel szemben:
- nagyobb energiahatékonyság – nincs szükség sok energia felhasználására a proof-of-work számításokhoz;
- alacsonyabb belépési korlát, csökkentett hardverkövetelmények – nincs szükség csúcstechnológiás hardverre ahhoz, hogy esélyünk legyen új blokkot létrehozni;
- kisebb centralizációs kockázat – a proof-of-stake architektúra több csomópont részvételét eredményezi a hálózat biztosításában;
- az alacsony energiaszükséglet miatt kevesebb ETH-t kell kibocsátani a részvételre ösztönzéshez;
- a szabálytalan viselkedés gazdasági büntetése miatt a proof-of-work architektúrához képest magasabb költséggel jár az 51%-os típusú támadás a támadó számára;
- ha egy 51%-os támadás legyűri a kriptogazdasági védelmi rendszert, a közösség dönthet egy becsületes blokklánc közösségi visszaállítása mellett.
További olvasnivaló
- Proof-of-stake (letéti igazolás) GYIK(opens in a new tab) Vitalik Buterin
- Mi az a Proof-of-Stake?(opens in a new tab) ConsenSys
- Mi az a Proof-of-Stake és miért fontos?(opens in a new tab) Vitalik Buterin
- Miért a proof-of-stake (2020. november)(opens in a new tab) Vitalik Buterin
- Proof-of-Stake: Hogyan tanultam meg szeretni a gyenge szubjektivitást(opens in a new tab) Vitalik Buterin
- Proof-of-stake Ethereum – támadás és védekezés(opens in a new tab)
- A proof-of-stake tervezési filozófiája(opens in a new tab) Vitalik Buterin
- Videó: Vitalik Buterin elmagyarázza a proof-of-stake mechanizmust Lex Fridmannak(opens in a new tab)