Kezdőlap
Cikkek
Mi az a Proof of Work (PoW)?

Mi az a Proof of Work (PoW)?

Középszintű
Közzétéve Dec 6, 2018Frissítve Mar 8, 2024
10m

Bevezetés

A Proof of Work (gyakori rövidítése PoW) egy olyan mechanizmus, amely megakadályozza a dupla költéseket. A legtöbb nagy kriptovaluta ezt használja konszenzus algoritmusként. Ez a kriptovaluta főkönyvének biztosítására szolgáló módszer.

A Proof of Work volt az első konszenzus algoritmus, amely felbukkant, és a mai napig domináns. Satoshi Nakamoto mutatta be a 2008-as Bitcoin fehér könyvben, de maga a technológia jóval korábban született meg. 

Adam Back HashCash rendszere egy korai példa a Proof of Work algoritmusra a kriptovaluták előtti időkből. Azzal, hogy a feladóktól megkövetelnék, hogy az e-mail elküldése előtt végezzenek el egy kis számítási műveletet, a címzettek csökkenthették a spamek számát. Ez a számítás gyakorlatilag semmibe sem kerülne egy hiteles feladónak, de gyorsan összeadódna annak, aki tömegesen küldene e-maileket.


Mit jelent a dupla költés?

Dupla költésről akkor beszélünk, ha ugyanazt a pénzeszközt többször is elköltik. A kifejezést szinte kizárólag a digitális pénzzel kapcsolatban használják, hiszen ugyanazt a fizikai készpénzt nehéz lenne kétszer elkölteni. Amikor egy kávéért fizet, készpénzt ad át a pénztárosnak, aki valószínűleg elzárja azt a kasszában. Nem mehet át a szemközti kávézóba, és fizethet egy másik kávét ugyanazzal a pénzzel.

A digitális pénzügyi rendszerekben fennáll a lehetőség, hogy igen. Biztosan sokszorosított már számítógépes fájlt – szimplán csak lemásolja és beilleszti. Ugyanazt a fájlt elküldheti e-mailben tíz, húsz, vagy ötven embernek. 

Mivel a digitális pénz csak adat, meg kell akadályozni, hogy az emberek ugyanazt az egységet kimásolják és elköltsék különböző helyeken. Ellenkező esetben a valuta pillanatok alatt összeomlik. 

A dupla költés részletesebb áttekintéséhez nézze meg a Magyarázat a dupla költéshez című cikkünket.


Miért szükséges a Proof of Work?

Ha elolvasta a blokklánc technológiáról szóló útmutatónkat, akkor tudja, hogy a felhasználók tranzakciókat közvetítenek a hálózaton. Ezek a tranzakciók azonban nem tekinthetők azonnal érvényesnek. Ez csak akkor történik meg, ha hozzáadják őket a blokklánchoz. 

A blokklánc egy nagy adatbázis, amelyet minden felhasználó láthat, így ellenőrizhetik, hogy elköltöttek-e már a pénzt. Képzelje el a következőképpen: Önnek és három barátjának van egy jegyzettömbje. Bármikor, amikor valamelyikőjük át akarja utalni a használt egységeket, feljegyzik – Alíz fizet Robinak öt egységet, Robi fizet Karolinának két egységet, stb.

Van itt még egy bonyodalom – minden tranzakciónál arra a tranzakcióra kell hivatkoznia, ahonnan a pénzeszköz származik. Ha tehát Robi két egységgel fizetett Karolinának, akkor a feljegyzés a következőképpen nézne ki: Robi két egységet fizet Karolinának ebből a korábbi, Alízzal folytatott tranzakcióból.

Már van egy módszerünk az egységek nyomon követésére. Ha Robi megpróbál egy újabb tranzakciót végrehajtani ugyanazokkal az egységekkel, amelyeket az imént küldött Karolinának, mindenki azonnal tudni fogja. A csoport nem engedi, hogy a tranzakciót hozzáadják a jegyzettömbhöz.

Nos, ez egy kis csoportban jól működhet. Mindenki ismeri a másikat, így valószínűleg meg fognak egyezni abban, hogy ki adjon hozzá tranzakciókat a jegyzettömbhöz. De mi a helyzet egy 10 000 fős csoport esetében? A jegyzettömbös ötlet nem működne jól, mivel senki sem akarja egy idegenre bízni a kezelését.

Itt jön a képbe Proof of Work. Ez biztosítja, hogy a felhasználók ne használjanak olyan pénzeszközöket, amelyet nincs joguk elkölteni. A PoW algoritmus a játékelmélet és a kriptográfia ötvözésével lehetővé teszi, hogy bárki a rendszer szabályai szerint frissítse a blokkláncot.


Hogyan működik a PoW?

A fent említett jegyzettömbünk a blokklánc. De nem egyesével adjuk hozzá a tranzakciókat, hanem blokkokba foglaljuk őket. A tranzakciókat bejelentjük a hálózatnak, majd a blokkot létrehozó felhasználók hozzáadják őket a kijelölt blokkhoz. A tranzakciók csak akkor tekinthetők érvényesnek, ha a kijelölt blokk megerősített blokká válik, ami azt jelenti, hogy felkerült a blokkláncra.

A blokk hozzáfűzése azonban nem olcsó. A Proof of Work megköveteli, hogy a bányász (a blokkot létrehozó felhasználó) saját erőforrásainak egy részét használja fel a jogosultsághoz. Ez az erőforrás a számítási teljesítmény, amelyet a blokk adatainak hashelésére használnak, amíg meg nem oldják a feladványt.

A hashelés azt jelenti, hogy a blokk adatait egy hashing függvényen futtatja le a blokk hash létrehozásához. A blokk hash úgy működik, mint egy „ujjlenyomat” – ez a bemeneti adatok azonosítója, és minden blokkhoz egyedi ujjlenyomat tartozik.

Gyakorlatilag lehetetlen visszafordítani egy blokk hash-t, hogy megszerezzük a bemeneti adatokat. Egy bemenet ismeretében azonban triviális meggyőződni a hash helyességéről. Csak el kell küldeni a bemenetet a függvényen keresztül, és ellenőrizni kell, hogy a kimenet ugyanaz-e.

A Proof of Work során olyan adatokat kell megadnia, amelyek hash-e megfelel bizonyos feltételeknek. De nem tudja, hogyan juthat el oda. Az egyetlen lehetőség az, hogy az adatokat egy hash függvényen futtatja le, és ellenőrzi, hogy megfelelnek-e a feltételeknek. Ha nem, akkor kissé meg kell változtatnia az adatait, hogy más hash-t kapjon. Akár egy karakter megváltoztatása az adatokban teljesen más eredményt fog hozni, így nem lehet megjósolni, hogy mi lesz a kimenet.

Ennek eredményeképpen, ha blokkot akar létrehozni, találgatósat fog játszani. Általában információt vesz az összes hozzáadni kívánt tranzakcióról és néhány más fontos adatról, majd mindezt összevonja. Mivel azonban az adatállománya nem fog változni, hozzá kell adnia egy változó információt. Ellenkező esetben mindig ugyanazt a hash-t kapná kimenetként. Ezt a változó adatot nonce-nak nevezzük. Ezt a számot minden egyes próbálkozásnál megváltoztatja, hogy minden alkalommal más hash-t kapjon. És ezt a folyamatot nevezzük bányászatnak.

Összefoglalva, a bányászat a blokkláncadatok összegyűjtésének folyamata, melynek során addig hasheli az adatokat egy nonce értékkel együtt, amíg meg nem talál egy bizonyos hash-t. Ha talál egy olyan hash-t, amely megfelel a protokoll által meghatározott feltételeknek, jogot kap arra, hogy az új blokkot a hálózatnak továbbítsa. Ekkor a hálózat többi résztvevője frissíti blokkláncát, hogy az tartalmazza az új blokkot.

A főbb kriptovaluták esetében a feltételek teljesítése hihetetlenül nagy kihívást jelent. Minél nagyobb a hash ráta a hálózaton, annál nehezebb érvényes hash-t találni. Ennek célja, hogy a blokkokat ne találják meg túl gyorsan.

Amint azt el tudja képzelni, sok hash kitalálása nagy számítógépes költséggel jár. Számítási ciklusokat és áramot pazarol. De a protokoll kriptovalutával jutalmazza, ha érvényes hash-t talál.

Foglaljuk össze, amit eddig tudtunk:

  • A bányászat kölséges.

  • Jutalmat kap, ha érvényes blokkot állít elő.

  • Egy bemenet ismeretében a felhasználó könnyen ellenőrizheti a hash-t – a nem bányászó felhasználók különösebb számítási energia ráfordítása nélkül ellenőrizhetik, hogy egy blokk érvényes-e.

Eddig minden rendben. De mi van akkor, ha megpróbál csalni? Mi akadályozza meg abban, hogy egy csomó csalárd tranzakciót adjon a blokkhoz, és érvényes hash-t hozzon létre?

Itt jön a képbe a nyilvános kulcsú kriptográfia. Most nem megyünk bele ennek a részleteibe, de nézze meg a Mi az a nyilvános kulcsú kriptográfia? című cikkünket. Röviden, néhány ügyes kriptográfiai trükköt alkalmazunk, amelyek lehetővé teszik bármely felhasználó számára, hogy ellenőrizzék, hogy valaki jogosult-e az elkölteni kívánt pénzösszegek mozgatására.

Amikor létrehoz egy tranzakciót, aláírja azt. A hálózaton bárki összehasonlíthatja az aláírását a nyilvános kulcsával, és ellenőrizheti, hogy egyeznek-e. Azt is ellenőrzik, hogy valóban el tudja-e költeni a pénzét, és hogy a bemenet összege magasabb-e, mint a kimenet összege (azaz, hogy nem költ-e többet, mint amennyije van).

Minden olyan blokkot, amely érvénytelen tranzakciót tartalmaz, a hálózat automatikusan elutasít. Már a csalás kísérlete is költséges lenne. A saját erőforrásait pazarolja el minden jutalom nélkül.

Ebben rejlik a Proof of Work szépsége: megdrágítja a csalást, de jövedelmezővé teszi a becsületes munkát. Minden racionális bányász a ROI-ra törekszik, így várhatóan olyan magatartást tanúsítanak, amely garantálja a bevételt.



Belépne a kriptovaluták világába? Vegyen bitcoint a Binance-en!



Proof of Work vs. Proof of Stake

Számos konszenzus algoritmus létezik, de az egyik legjobban várt a Proof of Stake (PoS). A koncepció 2011-re nyúlik vissza, és néhány kisebb protokollban már megvalósult. De a nagy blokkláncok egyikében sem fogadták még el.

A Proof of Stake rendszerekben a bányászokat validátorokkal helyettesítik. Nincs bányászat, és nincs verseny a hash-ek kitalálásáért. Helyette a felhasználók véletlenszerűen kerülnek kiválasztásra – ha kiválasztják őket, blokkot kell javasolniuk (vagy „kovácsolniuk”). Ha a blokk érvényes, akkor jutalmat kapnak, amely a blokk tranzakcióinak díjaiból áll.

Nem akárki kerül kiválasztásra - a protokoll számos tényező alapján választja ki a felhasználókat. A jogosultsághoz a résztvevőknek zárolniuk kell egy stake-et, amely a blokklánc natív valutájának egy előre meghatározott összege. A stake úgy működik, mint az óvadék: ahogy a vádlottak nagy összegű pénzt fizetnek be, hogy ne hagyják ki a tárgyalást, úgy az validátorok is zárolnak egy stake-et a csalás megelőzése érdekében. Ha tisztességtelenül cselekszenek, a stake-et (vagy annak egy részét) elvesztik.

A Proof of Stake számos előnnyel rendelkezik a Proof of Work mechanizmushoz képest. A legjelentősebb a kisebb szén-dioxid lábnyom – mivel a PoS-ben nincs szükség nagy teljesítményű bányászfarmokra, az elfogyasztott villamos energia csak töredéke a PoW rendszerben elfogyasztottnak. 

Ennek ellenére közel sincs a PoW teljesítményéhez. Bár pazarlásnak tűnhet, a bányászat az egyetlen konszenzus algoritmus, amely nagy léptékben is bevált. Alig több mint egy évtized alatt több billió dollár értékű tranzakciót biztosított. Ahhoz, hogy biztosan kijelenthessük, hogy a PoS felveheti a versenyt a biztonságával, a stakelést megfelelően tesztelni kell élesben. 


Záró gondolatok

A Proof of Work volt az eredeti megoldás a dupla költés problémájára, és megbízhatónak, valamint biztonságosnak bizonyult. A Bitcoin bebizonyította, hogy nincs szükségünk centralizált entitásokra ahhoz, hogy ugyanazt a pénzt ne lehessen kétszer elkölteni. A kriptográfia, a hash függvények és a játékelmélet ügyes alkalmazásával a decentralizált környezet résztvevői meg tudnak állapodni egy pénzügyi adatbázis állapotáról.