Särskilt tack till Sacha Yves Saint-Leger och Danny Ryan för översyn.

I den här delen kommer vi att diskutera konsensusmekanismerna bakom eth2. Eth2 har en ny metod för att avgöra vilket block som är kedjans huvud, tillsammans med vilka block är och är inte en del av kedjan.

Genom att använda en hybrid mellan de två mekanismerna syftar eth2 till att ha en enighet som, förutom att den är snabb och säker när nätverket bete sig normalt, förblir säker även när det attackeras.

Ett trilemma

FLP omöjlighet är ett kärnresultat inom fältet distribuerad beräkning som säger att det i ett distribuerat system inte är möjligt samtidigt ha säkerhet, livlighet och full asynkroni såvida inte några orimliga antaganden kan göras om ditt system.

Säkerhet är tanken på att beslut inte kan göras liveness fångar uppfattningen att nya saker kan avgöras. Ett protokoll är asynchronus om det inte finns någon begränsning för hur lång tid ett meddelande kan ta att levereras.

FLP Trilemma

Om noder kunde kommunicera på ett tillförlitligt sätt, följ alltid protokollet ärligt och kraschar aldrig, skulle samförstånd vara lätt, men det är inte så världen fungerar. När dessa antaganden inte håller är FLP Impossibility ett bevis på att åtminstone en av: säkerhet, livlighet eller full asynkroni måste äventyras.

GHOSTs och deras åsikter om gafflar

Eth2 använder Greedy Heaviest Observed Subtree (GHOST) som regel för gaffelval. GHOST väljer kedjans chef genom att välja den gaffel som har flest röster (det gör det genom att beakta alla röster för varje gaffelblock och deras respektive barnblock).

Uttryckt på ett annat sätt, varje gång det finns en gaffel väljer GHOST den sida där fler av de senaste meddelandena stöder det blockets undertråd (dvs. fler av de senaste meddelandena stöder antingen det blocket eller en av dess ättlingar). Algoritmen gör detta tills den når ett block utan barn.

GHOST har fördelen att minska effektiviteten hos attacker under tider med hög nätverksfördröjning och att minimera djupet på kedjeförskjutningar jämfört med den längsta kedjan regel. Detta beror på att medan en angripare kan hålla byggstenar effektivt på sin egen kedja och därmed göra det längst, skulle GHOST välja den andra gaffeln eftersom det är fler röster för det totalt.

I synnerhet använder eth2 en variation av GHOST som har anpassats till ett PoS-sammanhang som kallas Latest Message Driven GHOST (LMD-GHOST). Tanken bakom LMD-GHOST är att man vid beräkning av kedjans huvud bara tänker på senast omröstning gjord av varje validerare, och inte någon av de röster som gjorts tidigare. Detta minskar dramatiskt den beräkning som krävs när GHOST körs, eftersom antalet gafflar som måste beaktas för att utföra gaffelvalet inte kan vara större än antalet validatorer ($ O (v) $ i Big O-notation).

Enligt GHOST: s regler kan validerare / gruvarbetare alltid försöka lägga till ett nytt block till blockchain (livlighet), och de kan göra detta när som helst i kedjans historia (asynkron). Eftersom det är live och helt asynkront, tack vare vår vän FLP, vet vi att det inte kan vara säkert.

GHOST gynnar livlighet över säkerhet

Bristen på säkerhet presenterar sig i form av reorgs där en kedja plötsligt kan växla mellan gafflar med godtyckligt djup. Uppenbarligen är detta oönskat och eth1 hanterar detta genom att användarna gör antaganden om hur lång tid gruvarbetare kommer att ta för att kommuniceras med resten av nätverket, det tar formen av att vänta på bekräftelser på $ x $. Eth2 gör däremot inga sådana antaganden.

Den vänliga slutgadgeten

En blockchain utan någon aning om säkerhet är värdelös eftersom inga beslut kunde fattas och användare inte kunde komma överens om kedjan. Stiga på Casper den vänliga finitetsgadgeten (Casper FFG). Casper FFG är en mekanism som gynnar säkerhet framför livlighet när man fattar beslut. Detta innebär att även om de beslut som fattas är slutgiltiga, under dåliga nätverksförhållanden, kanske det inte kan besluta om någonting.

FFG är en krypto-ekonomisk anpassning av klassikern Praktiskt byzantint feltolerent (PBFT) som har faser där noder först indikerar att de vill komma överens om något (berättigande) och håller sedan med om att de har sett varandra komma överens (slutförande).

Eth2 försöker inte motivera och slutföra varje plats (den tid då ett block förväntas produceras) utan istället bara för varje 32 platser. Sammantaget kallas 32 slots en epok. Först undertecknar validatorer att de håller med om alla 32 block i en epok. Om $ geq frac {2} {3} $ sedan gör det, är blocket motiverat. I en senare epok får validatorer en ny chans att rösta för att indikera att de har sett den tidigare berättigade epoken och om $ geq frac {2} {3} $ gör detta, är epoken färdigställd och är för alltid en del av eth2 kedja.

FFG använder ett smart trick. Rösterna består faktiskt av två delröster, en för den epok som försöker vara motiverad och en annan för en tidigare epok som ska slutföras. Detta sparar mycket extra kommunikation mellan noder och hjälper till att uppnå målet att skala till miljoner validerare.

Två spöken i en dikerock

Konsensus inom eth2 bygger på både LMD-GHOST – som lägger till nya block och bestämmer vad chefen för kedjan är – och Casper FFG som fattar det slutliga beslutet om vilka block är och är inte en del av kedjan. GHOSTs gynnsamma livskraftegenskaper gör att nya block snabbt och effektivt kan läggas till kedjan, medan FFG följer efter för att ge säkerhet genom att slutföra epoker.

De två protokollen slås samman genom att köra GHOST från det sista slutförda blocket som beslutades av FFG. Genom konstruktion är det sista slutgiltiga blocket alltid en del av kedjan vilket innebär att GHOST inte behöver ta hänsyn till tidigare block.

I normalt fall när block produceras och $ geq frac {2} {3} $ validerare röstar om dem, läggs dessa block till kedjan av GHOST, och inte länge efter berättigade och slutförda av FFG (som tar hänsyn till de sista epokarna).

Om det finns ett angrepp på nätverket och / eller en stor andel validerare går offline, fortsätter GHOST att lägga till nya block. Men eftersom GHOST är live, men inte säkert, kan det ändra sig om kedjans huvud – det beror på att nya block kontinuerligt läggs till kedjan, vilket betyder att noder fortsätter att lära sig ny information. FFG å andra sidan gynnar säkerhet över livlighet vilket innebär att det slutar slutföra block tills nätverket är stabilt nog för att validerare ska kunna rösta konsekvent igen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here