Tanúsítások
Utolsó módosítás: , 2024. január 18.
A validátornak minden korszakban (epoch) tanusítást kell készítenie, aláírnia és szétküldenie. Ez a leírás bemutatja, hogyan néznek ki ezek a tanúsítások, hogyan kezelik azokat és kommunikálják a konszenzuskliensek között.
Mi az a tanúsítás?
Minden korszakban (epoch) (6,4 perc) a validátor tanúsítást készít a hálózatnak. A tanúsítás a korszak egy megadott slotjára történik. A tanúsítás célja az, hogy szavazzon amellett, ahogyan ő maga látja a láncot, különösképpen a legutóbbi ellenőrzött blokk és a jelen korszak első blokkja tekintetében (melyeket source
(eredet) és target
(cél) ellenőrzési pontoknak neveznek). Az információt összekombinálják az összes résztvevő validátorra, így a hálózat konszenzust tud elérni a blokklánc státuszát illetően.
A tanúsítás a következő elemekből áll:
aggregation_bits
: a validátorok bitlistája, ahol a pozíció a validátornak a bizottságbeli indexéhez kapcsolódik; az érték (0/1) azt mutatja, hogy a validátor aláírta adata
mezőt (tehát aktív és egyetért a blokkelőterjesztővel)data
: a tanúsításhoz kapcsolódó részletek, ahogy az alább látsziksignature
: egy BLS aláírás, ami aggregálja az egyéni validátorok aláírásait
A tanúsítást végző validátor első feladata az, hogy felépítse a data
mezőit. A data
a következő információkat tartalmazza:
slot
: A slot száma, melyre a tanúsítás vonatkozikindex
: Egy szám, ami beazonosítja, hogy a validátor melyik bizottsághoz tartozik egy adott slotbanbeacon_block_root
: A blokk gyökérhash-e, amit a validátor lát a lánc fejeként (az elágazásválasztási algoritmus alkalmazásának eredménye)source
: A véglegesedési szavazás része, mely azt mutatja, hogy a validátorok melyik blokkot látják a legutolsó igazoltnaktarget
: A véglegesedési szavazás része, mely azt mutatja, hogy a validátorok melyik blokkot látják a jelen korszak első blokkjának
Amint a data
felépül, a validátor átválthatja a bitet az aggregation_bits
mezőben 0-ról 1-re, amely a saját validátor indexéhez kapcsolódik, így mutatja, hogy részt vett.
Végül a valdátor aláírja a tanusítást és elküldi azt a hálózaton.
Aggregált tanúsítás
Az adat elterjesztése a hálózaton minden validátor esetében jelentős költséggel jár. Ezért az egyéni validátorok tanúsításait aggregálják az alhálókon belül, mielőtt szélesebb körben szétküldenék azt. Ennek része az aláírások aggregálása, így a kiküldött tanúsítás tartalmazza a konszenzus data
mezőit és egyetlen aláírást, melyet az összes validátor aláírásából készítenek, aki egyetértett a data
tartalmával. Ezt le lehet ellenőrizni az aggregation_bits
mezővel, mert ez adja meg a bizottságban lévő validátorok indexeit (akiknek az ID-ja része a data
mezőinek), amellyel le lehet kérdezni az egyéni aláírásokat.
Minden korszakban minden alhálóban egy validátort kiválasztanak, hogy aggregator
legyen. Az aggregátor összegyűjti az összes tanúsítást, amelyről hall a pletykahálózaton, s melyeknek ugyanolyan data
áll rendelkezésre, mint neki. Minden egyező tanúsítás küldője feljegyződik az aggregation_bits
mezőben. Ezután az aggregátor szétküldi az aggregált tanúsítást a szélesebb hálózaton.
Amikor a validátort választják blokkelőterjesztőnek, akkor az új blokkba beteszi az aggregált tanúsításokat az alhálózatoktól egészen az utolsó slotig.
A tanúsítások belefoglalásának életciklusa
- Létrehozás
- Elterjesztés
- Aggregálás
- Elterjesztés
- Belefoglalás
A tanúsítás életciklusát a következő ábra is bemutatja:
Jutalmak
A validátorok jutalmat kapnak az elküldött tanúsításokért. A tanúsítás jutalma két dologtól függ: a base reward
(alapjutalom) és az inclusion delay
(belefoglalási késés). A belefoglalási késés a legjobb esetben 1.
attestation reward = 7/8 x base reward x (1/inclusion delay)
Alapjutalom
Az alapjutalom számítása a tanúsításban részt vevő validátorok számától és az általuk letétbe helyezett ether egyenlegétől függ:
base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)
Belefoglalási késés
Aikor a validátorok szavaztak a lánc fejére (block n
), akkor a block n+1
még nem volt előterjesztve. Ezért a tanúsítások természetes módon one block later (egy blokkal később) kerülnek be, így minden tanúsítás, amelyik azt mondta, hogy a block n
a lánc feje, az bekerül a block n+1
-be, és az inclusion delay (belefoglalási késés) értéke 1. Ha a belefoglalási késés két slotnyi lesz, akkor a tanúsítási jutalom feleződik, mert a jutalom kiszámításához az alapjutalom szorozva van a belefoglalási késés reciprokával.
Tanúsítási esetek
Hiányzó validátor, aki szavaz
A validátoroknak legfeljebb 1 korszak áll rendelkezésre, hogy elküldjék a tanúsításukat. Ha a tanúsítás lekési a 0. korszakot, akkor belefoglalási késéssel be tudják még küldeni az 1. korszakban.
Hiányzó aggregátor
Összesen 16 aggregátor van minden korszakban. Emellett véletlenszerű validátorok be vannak jegyezve két alhálózatra 256 korszakra, és ők helyettesítik az aggregátorokat, ha bárki hiányzik.
Hiányzó blokkelőterjesztő
Néhány esetben a szerencsés aggregátor blokkelőterjesztővé válhat. Ha a tanúsítás nem került be, mert a blokkelőterjesztő hiányzik, akkor a következő előterjesztő felkapja az aggregált tanúsítást és beteszi a következő blokkba. Ugyanakkor az inclusion delay megnövekszik eggyel.
További olvasnivaló
- Tanúsítások Vitalik által kommentált konszenzusspecifikációban(opens in a new tab)
- Tanúsítások az eth2book.info oldalon(opens in a new tab)
Ismersz olyan közösségi anyagot, amely segített neked? Módosítsd az oldalt és add hozzá!
Hasznosnak találta a cikket?
Következő
PoS jutalmak és büntetések