Tanúsítások
Utolsó módosítás: @Satglow(opens in a new tab), 2024. április 23.
A validátornak minden korszakban tanúsí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 konszenzusos kliensek között.
Mi az a tanúsítás?
Minden (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ókat ö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érhashe, 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, amely azt mutatja, hogy a validátorok melyik blokkot látják a legutoljára 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 tanúsí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ózatokon 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 azon validátorok aláírásából készítenek, akik egyetértettek 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 a data
mezőben látható), amellyel le lehet kérdezni az egyéni aláírásokat.
Minden korszakban minden alhálóban 16 validátort kiválasztanak, hogy aggregátor
legyen. Az aggregátorok összegyűjtik az összes tanúsítást, amelyről hallanak a pletykahálózaton, és amelyeknek ugyanolyan data
áll rendelkezésre, mint nekik. Minden egyező tanúsítás küldője feljegyzésre kerül az aggregation_bits
mezőben. Ezután az aggregátorok szétküldik az aggregált tanúsítást a szélesebb hálózaton.
Amikor egy validátort választanak 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
- Előterjesztés
- Aggregálás
- Előterjeszté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 függ a részvételi jelzésektől (forrás, cél és fej), az alapjutalomtól és a részvételi aránytól.
A részvételi jelzések értéke igaz vagy hamis lehet, a benyújtott tanúsítás és a kapcsolódó késedelem függvényében.
A legjobb esetben mindhárom jelző igaz, ekkor a validátor a következő jutalmat kapná (helyes jelzőnként):
jutalom += alapjutalom * jelzés súlya * jelzés tanúsítási aránya / 64
A jelzés tanúsítási arányát az adott jelzésre vonatkozóan az összes tanúsítást végező validátor tényleges egyenlegének összegével mérik az összes aktív tényleges egyenleghez viszonyítva.
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
Amikor 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 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 a 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 tanúsítási 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 belefoglalási késés nö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á!