Még egyszer az Ethereum működéséről

Ugyan egyszer már volt szó az Ethereum alapjairól, mégis érdemes alaposabban is megismerkedni a platform működésével.

Vegyük például a “Mi is az az Ethereum?” cikkben már említett online notebook alkalmazást.

Az Ethereum esetében egy ilyen alkalmazásnak nincs szüksége egy külön entitásra az adatok tárolásához és kezeléséhez. Egy harmadik, közvetítő fél kiküszöbölése érdekében az Ethereum sokat merít a bitcoin-protokollból és annak blokklánc-dizájnjából. Ezt azonban számos kisebb-nagyobb módosítással teszi, hogy olyan alkalmazásokat is támogathasson, amik túlmutatnak a kriptovaluták világán.

Az Ethereum ugyan tudatosan vesz át elemeket a Bitcoin dizájnjából, de közben egy olyan platform kialakítására törekszik, ahol a programozók fejlettebb alkalmazásokat és un. “okos” szerződéseket hozhatnak létre új tulajdoni szabályokkal, alternatív tranzakciós módszerekkel és állapotátviteli módokkal.

Az Ethereum nem törekszik kevesebbre, mint egy ‘Turing-teljes’ programozási nyelv létrehozására, ami olyan programok írását teszi lehetővé, amelyekben a blokklánc-tranzakciók ‘konkrét kimeneteleket’ (‘specific outcomes’) irányítanak és tesznek automatikussá.

Ez a fajta rugalmasság talán az Ethereum legnagyobb újítása, amit bővebben is kifejtünk majd az Ethereum okosszerződésekről szóló cikkünkben.

Az Ethereum blokklánc

Az Ethereum blokklánc struktúrája abban nagyon hasonlít a Bitcoinéhoz, hogy mindkettőnél egészében meg vannak osztva a tranzakciós előzmények. A hálózat minden csomópontjának van egy másolata a tranzakciókról.

A fő különbség az Ethereumnál, hogy a hálózati csomópontok az ether tranzakciói mellett minden egyes okosszerződés aktuális állapotát is nyilván tartják (ez ennél jóval komplikáltabb, de lejjebb még beszélünk erről).

Az összes Ethereum alkalmazásnál a hálózatnak követnie kell azok állapotát, a felhasználók egyenlegét, az összes okosszerződés-kódot, valamint az összes tárolási helyet.

A Bitcoin egy ún. elköltetlen tranzakcióskimenet-protokollt használ arra, hogy nyilván tartsa, hogy kinek éppen mennyi bitcoinja van.

Ez talán bonyolultnak hangzik elsőre, pedig valójában nagyon egyszerű. Minden egyes bitcoin-tranzakciókor a hálózat a teljes mennyiséget először ‘felváltja’ úgy, mintha csak valami nagyobb címletről, papírpénzről lenne szó, majd ezt az adatot visszajuttatja apránként, “aprópénzként”.

A későbbi tranzakciókhoz a Bitcoin hálózatának már összegeznie kell ezt a “felváltott”pénzt, ami a státusza szerint lehet elköltött vagy elköltetlen.

Az Ethereum ezzel szemben fiókokat használ.

A bankszámlákhoz hasonlóan az ether tokenek is egy “tárcában” vannak eltárolva, ahonnan át lehet őket utalni egy másik fiókra. Ezek az összegek ugyan nem vesznek el, mégsem lehet egy folyamatos üzleti kapcsolatról beszélni.

Az Ethereum virtuális számítógépe

Az Ethereum esetében mindig, amikor egy program használatban van, egy több ezer számítógépből álló hálózat vesz részt a feldolgozásban.

A különleges, okosszerződésekre jellemző programozási nyelvek összesége egyfajta ‘bytekód’, amit az Ethereum virtuális számítógépe (EVM) olvasni és végrehajtani tud.

A hálózat összes csomópontja végrehajtja a saját EVM-jével az ilyen kóddal létrehozott szerződést.

Ahogy már említettük, az aktuális állapot nyilvántartása mellett a hálózat összes csomópontján van egy másolat a tranzakciós és a szerződéses előzményekről is. Mindig, amikor egy felhasználó végrehajt egy műveletet, a hálózat összes csomópontjának egyeznie kell abban, hogy ez a változtatás megtörtént.

A bányászok és csomópontok hálózatának itt az a célja, hogy feleljenek az egyik állapotból a másikra való átállásért. Nem egy olyan harmadik félről van szó, mint amilyen pl. a PayPal vagy egy bank. Míg a Bitcoin bányászai a bitcoinok cseréjét erősítik meg és érvényesítik két felhasználó között, az EVM egy szerződést hajt végre olyan szabályok szerint, ahogy azokat a fejlesztők eredetileg meghatározták.

Az EVM-en a valódi számítási műveletek egy “verem-alapú” nyelven (olyan 0 és 1 alapú nyelven, amit egy számítógép olvasni tud) történnek, de a fejlesztők számára elérhetőek olyan magas színvonalú, ember által írható és olvasható programozási nyelvek, mint a Solidity vagy a Serpent.

Ahogy azt a Bányászat és az Ethereum című bevezető cikkben is leírtuk, a bányászok azok, akik gondoskodnak arról, hogy ne legyen visszaélés a hálózaton, hogy senki ne költse el ugyanazt az összeget többször, hogy ne legyenek olyan szerződések, amiért nem fizettek.

Már most is több ezer Ethereum csomópont létezik, és az összes ilyen csomópont ugyanazt a kódot gyűjti össze és hajtja végre.

Most sokakban felmerülhet, hogy ez a fajta számítási végrehajtási módszer nem-e jóval drágább a hagyományoshoz képest. És igazuk is van, az Ethereum hálózatát csak különleges esetekben érdemes igénybe venni.

Az Ethereum hivatalos fejlesztői kézikönyve ezt a következőképpen fogalmazza meg:

Egy jó heurisztikának az a lényege, hogy olyasmit nem fogsz tudni megcsinálni az EVM-en, amit 1999 óta egy telefonnal is elvégezhetsz.