Megvan az az érzés, amikor a pirkadat első pislákolására odakuckózol az ablakhoz azzal az elvárással, hogy nemsokára végig nézheted a gyönyörű napfelkeltét… vársz-vársz… közben rájössz, hogy azért egy kávét csak csinálhattál volna… de nem akarsz megfordulni, mert akkor lemaradsz a legszebb pillanatról… vársz tovább… eltelik újabb 10 perc és még mindig csak a pislákolás erősödik, de a nap koronája még sehol… közben már egyre inkább menned kéne a mellékhelyiségbe is… de akkor sem fogod otthagyni, ha már több mint fél órája itt rostokolsz… tovább várod a csodálatos látványt… majd egy hangos “OTT ROHADJON MEG!!!” felkiáltással elmész elintézni a dolgod…

Na körülbelül ilyen érzésem van, amikor BÁRHOL, BÁRMIT olvasok az ethereum jövőjéről. Éppen ennek okán eléggé ignoráltam is, remélve, ha kellően sok idő eltelik, akkor csak láthatom nyomát értékelhető progressznek. Kb. 2 éve foglalkoztam komolyabban itt a blogon [1], [2] a témával. Nos, pont ez a két év kellett, hogy végre ne csak álmokról és tévelygésekről tudjak írni, hanem konkrétumokról is.

Persze az Ethereum törzsgárda mentségére legyen mondva, hogy az elmúlt bő három évük nagyon kemény volt. Gyakorlatilag asszisztáltak az ICO mániához, ami miatt a nap 24 órájában mindenféle scam projekteket kellett shillelniük. Roadshowzniuk kellett körbe a világban és rengeteg tánc koreográfiát megtanulniuk.

This is how Ethereum 2.0 works! /sarcasm...

Mára azonban alább hagyott a mánia és ezzel együtt elkezdett kiapadni az alapítvány végtelennek tűnő anyagi forrása, ami miatt folyamatosan dobálják ki a korábbi full expat finanszírozott projekteket. Mindez intő jel lehetett, hogy a fiatalok úgy döntsenek, ideje visszatérnünk ahhoz, amihez értenek is: és elindult gőzerővel az Ethereum 2.0 átállás és vele együtt az Ethereum 1.X foltozás is. Ezzel kapcsolatban mára lényegesen többel rendelkezünk, mint néhány raklap whitepaper; így időszerűnek tartom újra leporolni a témát.

Teszem ezt azért is, mert végre elindult és stabilan működik is az első Ethereum 2.0 testnet (Topar) a PrysmaticLabs jóvoltából, így a folytatás mögött leírt elmélet ma már élesben is kipróbálható. A cikk végére rakok is egy kis segédletet, hogy miként tudja bárki egyszerű eszközökkel (Metamask + Pyrsm client) kipróbálni, hogy milyen is a validálás.

Ebben a cikkben még nem szeretnék nagyon belemenni az eth2.0 technológiai részleteibe… inkább csak segítenék az olvasónak megérteni, hogy miben is lesz más az eth2.0 és milyen módon is fog együtt működni a jelenlegi ethereummal.

A cikk megírásának egyik motivációja, hogy egyre több félinformáció és minden alapot nélkülöző “szakértői” vélemény jelenik meg már itthon is Ethereum 2.0 kapcsán. Reményeim szerint ezzel a cikkel valamelyest tudom korrigálni mindezt.

Ha röviden össze kéne foglalni, hogy mi az Ethereum 2.0, akkor nagyjából azt mondhatnám, hogy a meglévő ethereum teljes újragondolása, amelyet lényegében átjárhatóvá tesznek a jelenlegi ethereummal is. Fontos, hogy az Eth2.0 elindítása NEM jár új ethereum kibocsátással. Valószínűleg a legtöbb scam (átverés) egyébként erre fog fókuszálni: “vegyél eth2.0-át olcsón, még a kiadás előtt“.

Ez persze nem jelenti azt, hogy nem lesz ethereum 2.0-ás Ether… Kicsit lentebb ezt alaposabban kifejtem, de a lényeg, hogy több évig az ethereum 2.0-án létező Ether (BETH vagy ETH2 majd elválik) teljesen el lesz szeparálva a jelenlegi (1.X) Ethertől (ETH), ami főleg azokban az esetekben fog zavart okozni, ahol például egy exchange kitalálja, hogy akkor ő idő előtt támogatni fogja az BETH-t is párhuzamosan. A helyzet pedig majd akkor fog eszkalálódni, amikor már beindul az exchangek licitálása arra, hogy akkor most ők az 1.X vagy a 2-es láncon lévő Ethert kezelik-e az “ETH” ticker alatt. Persze ez a probléma még hosszú évekre van tőlünk.

Technológiailag az Eth2.0 legnagyobb újdonságai: 64 shard (különálló sidechain), amik már Proof of Stake elven lesznek validálva, tehát lényegében megszűnik a bányászat is. A shardok és a validációs munkálatokat az un. “Beacon Chain” fogja össze, ami mondhatni az ethereum szívverésért felelős független hálózat lesz. A Beacon Chain szintén PoS elven validált lánc lesz.

Az eth2.0 másik fontos belépési pontja az un. “deposit contract” lesz, aminek a lényege, hogy a jelenlegi ethereumból (1.X) Ethert (ETH) lehessen átvinni az eth2.0-ába (BETH vagy ETH2). Ez gyakorlatilag úgy néz ki, hogy a deposit contractnak küldött Ether-ek örökre lockolódnak és a contract lefutása után ugyanannyi Ether (BETH vagy ETH2) megjelenik a küldő címen az Eth2.0 hálózaton. Fontos, hogy ez a folyamat egyirányú. A teljes Eth2.0 release után elvileg ez a gateway kétirányú lesz. Mivel itt, akár 5-10 évről is beszélünk, ezért érdemes úgy tervezni vele, hogy az Eth2.0-ra átküldött Ethereket egyhamar már nem lehet majd visszahozni a “régi” ethereumba. Ez főleg azoknak jelent komoly kommitmentet, akik úgy döntenek, hogy a Phase 0 – várhatóan – idei indulását követően már most el akarnak kezdeni validálni.

Mindebből logikusan következik, hogy a fejlesztők egy nagyon lassú átmenettel számolnak. Olyannyira lassúról, hogy konkrétan nem is számolnak az ethereum (1.x) kivezetésével, helyette úgy tervezik, hogy a végleges állapotban az Ethereum (1.x) beolvad egy önálló külön shardként az ethereum 2.0-ba. Bár egyelőre az Eth2.0 kapcsán nagyon sok ködös dolog van még… de ezek közül ez a fajta interoperábilis Eth2.0+Eth1.x a leginkább zavaros. Ezért nem is nagyon foglalkoznék most ezzel.

A fentebbiekben leírtak közül a Beacon Chain és a deposit contract már elkészült és jelenleg is elérhető testneten. A Görli testneten már él is a deposit contract, így ott már lehet is tesztelni. De tervek szerint ezek még idén mainnetre is kerülnek. Ergo, el fog indulni az Ethereum 2.0-nak a “rendszer” lánca és oda be lehet utalni (deposit contracton keresztül), ezáltal validátorrá lehet válni. Mindezeket egységesen phase 0-ának nevezi az Eth2.0 csapat. Phase 0-ában még sem a shardok nem indulnak el, sem contractokat nem lehet futtatni és… lényegében még semmit nem lehet csinálni a blokklánccal. Ezek a funkciók csak majd a Phase 1-ben fognak bejönni… valószínűsíthetően évek múlva.

De nézzük a validáció és validátor dolgot, hiszen ma talán ez izgathat leginkább mindenkit.

Proof of Stake, Ethereum Validáció

A PoS alapja a validáció, ami ugye a meglévő matematikai alapú trial-and-error és brute force bányászatot (proof of work) váltja le. Ennek lényege, hogy a validátor a saját stakejével felel azért, hogy jó munkát végez-e. Hogy ez mit is jelent pontosan azt egy 2017 augusztusában készült cikkben már leírtam. Viszont mivel azóta már pontosodtak a részletek, ezért érdemes lehet feleleveníteni:

Minden validátor önálló entitás lesz, akik diszkrét méretű (32 ETH) stakekkel fognak dolgozni. A validáció szempontjából releváns és megejegyzendő fogalmak: Epoch, Slot, Community és Finality. Hogy mik is ezek szépen sorjában:

Epoch: Az Ethereum 2.0-ban 12 másodpercenként fognak új slotok nyílni. Mivel itt már nem játszik be a PoW játékelméleti szórása, így a slotok várhatóan tényleg kb. 12 másodpercenként létre is fognak jönni. Egy Epoch 32 slotot tartalmaz. A slot annyit jelent, hogy lehet új blockot készíteni. Az előbbiek alapján az Epochok kb. 6 percenként fognak záróni. Az Epoch zárást követően a beacon chain újraosztja a validátor community tagjait, tehát az azt követő slotokon már várhatóan más validátorok fognak dolgozni.

Finality: A Proof of Stake rendszerben akkor tekintünk egy tranzakciót konfirmáltnak, ha az elérte a finality állapotot. Ehhez az szükséges, hogy az adott tranzakciót befoglaló Epoch és az azt követő Epoch is már le legyen zárva. Ennek okán garantálva, hogy legalább két véletlenszerűen kiválasztott Community is érvényesnek tekintette az adott tranzakciót, ezáltal drasztikusan csökkentve az összejátszásnak akár csak az esélyét is. Ez praktikusan annyit jelent, hogy az Eth2.0-án egy tranzakció erős konfirmációjához akár 10-12 percet is várni kell, de ez a konfirmáció lényegesen erősebb, mint a jelenlegi Proof of Work-ös 6-12-24 confirmation. A PoS-nál nem történhet deep reorganizáció, mivel itt már nem a “leghosszabb lánc” elve érvényesül, hanem az Epoch+Finality elv.

Community: A Beacon Chain véletlenszerűen választ ki minden egyes Epochra adott mennyiségű validátort (ennek a száma elvileg 128 darab, de ez még változhat), ezen validátorok feladata az adott epochon belüli slotok validálása. Minden slotra véletlenszerűen kiválasztott validátor jut, akinek – ha van mit – el kell készítnie a slot tartalmát (gyakorlatilag a blockot), melynek helyességére a többi validátornak szavaznia kell. Egy slot akkor érvényes, ha annak tartalmát az adott community 2/3 helyesnek véli. A community pedig akkor fogja azt helyesnek vélni, ha azt gondolják, hogy az adott block producer egyrészt formailag jó blokkot csinált, másrészt pedig azt valóban az előző slot után fűzte.

Slot: Bár a korábbiakból ez már logikusan következik, de a Slot gyakorlatilag az ami eddig a block volt, viszont mivel a Beacon chain a “karmester” és mivel a shardok miatt párhuzamos “univerzumokban” is keletkeznek blokkok, így a slot lényegében sokkal több mint ami eddig a block volt. Gyakorlatilag ezt úgy kell elképzelni, hogy az adott epoch adott slotjának időszakában keletkező blokkokat a hálózat egy elemi egységnek kezeli. Ez azért fontos, mert pl. a shardok között kell biztosítani az átjárhatóságot, amihez tudni kell szinkronizálni a shardokat, biztosítva az időrendiséget nem csak egy-egy shardon belül, de a shardok között is. Nos ezt biztosítja a Slot.

Crosslink – ami mindezt összetartja

Az előző fejezetben reményeim szerint sikerült jól átadnom, hogy miként is fog zajlani a validáció, miként koordinálja ezt a Beacon Chain és miként is vesznek ebben részt az egyes validátorok. A nagy kérdés már csak az, hogy mégis mitől fog ez az egész egy nagy egész rendszert alkotni. Itt lép a képbe a Beacon Chain másik fontos funkciója: a Crosslink.

A Beacon Chainen keletkező blokkok hivatkozást tartalmaznak az egyes shardok legfrissebb blokkjaira, így a Beacon Chain blokkjai gyakorlatilag validálják a shardokat is, hiszen a Beacon Chainen minden validátor szavaz egyszerre. Ez gyakorlatilag annyit jelent, hogy egy shardon lévő tranzakció vagy mondjuk egy dapp, akkor tekinthet finality-nek egy másik shardon lévő tranzakciót, ha az ahhoz tarozó sloton keletkező blokk már bekerült a Beacon Chain crosslinkjébe is és azon már finality keletkezett. Így válik lehetségessé, hogy egy-egy shard anélkül tudjon validálni egy másik shardon lévő tranzakciót, hogy ehhez ismernie kellene a másik shard összes blokkját.

Checkpoint

Az epoch és slot rendszer logikus következménye, hogy valamilyen szinten determinisztikussá kéne tenni az egyes epoch-ok kezdetét a Beacon Chainen. Erre hivatott a checkpoint block, mely minden esetben az adott epoch első slotján keletkező blokk, kivéve, ha az első sloton nem keletkezik blokk. Ebben az esetben a legutolsó érvényes blokkal is rendelkező slot lesz a checkpoint.

Hogy fordulhat elő az, hogy nem keletkezik blokk egy sloton? Mivel minden egyes slothoz előre meg van határozva, hogy ki fogja ahhoz a blokkot készíteni, ezért előfordulhat, hogy az adott validátor a legnagyobb igyekezete ellenére sem tudja elkészíteni a rá bízott blokkot. Ennek sok oka lehet, de a legprózaibb az hogy egyszerű slackkel vagy egyéb okból offline. Ilyen esetben nincs “beugró”, az adott slot üres marad.

A checkpoint lényege, hogy bármely blokk esetén egyértelműen kiderüljön, hogy melyik epochoz tartozik és az hol indult. Ez leginkább akkor válik fontossá, ha egy tranzakció finality-jét akarjuk mérlegelni.

Nagyjából szerintem ennyi elég is lesz elsőre, az Eth2.0 illetőlen. A téma apropójából a következő postban már a validálás gyakorlati folyamatáról fogok írni, beleértve a büntetéseket, jutalmakat, stb.

Kipróbálnád az Ethereum validációt?

Tartok tőle, hogy az olvasók egy része a cikk elolvasása után komoly késztetést érez arra, hogy mindezt ki is próbálja a gyakorlatban. A cikk záró fejezetét nekik szánom, némi praktikus tanácsokkal.

Jelenleg egyetlen működőképes Eth2.0 kliens létezik, ez a Prysm, ennek két komponense érhető el: A beacon chain light client és a validator client.

A Prysm klienst könnyedén le tudod töltni githubról:

git clone https://github.com/prysmaticlabs/prysm && cd ./prysm

Mivel a Prysm Topaz networkjének (ez jelenleg a hivatalos Ethereum 2.0 testnet) a Görli Ethereum 1.0 a párja (deposit contact), így szükséged lesz egy Görli testnet hozzáféréshez. Ha nem akarsz szenvedni azzal, hogy geth-tel lehúzd a teljes testnet blockchaint (szükségtelen), akkor bőven elég lesz egy metamask wallet.

Szükség lesz továbbá 32 Ether-re a Görli (Goerli) testneten a validator deposithoz. Ehhez faucetet találsz a teszt hálózat saját oldalán: https://goerli.net. Javaslom a social faucetet is, ott esélyesebb, hogy belátható időn belül meglesz a 32 GöEth-d.

Ha ezzel megvagy, akkor már a nehezen túl is vagy. Mehet a validátor kulcs generálás és a deposit contract meghívása, majd indulhat a validálás! A további lépések step-by-step a Pyrsm oldalán találod meg: https://prylabs.net/participate

Sok sikert mindenkinek a kalandhoz! Találkozzunk a Beacon Chainben!

The post Ethereum 2.0 – Már a horizonton! appeared first on Variance – A Bitcoin Blog.

Source: Variance

%d bloggers like this: