A hírek kommentálása és a reflektorfényben úszó bitcoinról való spekulálás helyett most az alapokhoz térünk vissza. A jelenség mélyebb megértése ezen a téren nem pusztán műveltségi kérdés, hanem egyben befektetési iránytű is lehet. Nagyon valószínű ugyanis, hogy a kriptopénzek jövője azon múlik majd, hogy ezek a technológiák mire képesek, és a kihívásokra adott válaszaik mennyire időtállóak. Az alábbiakban ezért lépésről lépésre járjuk végig azokat a kulcsfontosságú fogalmakat és építőköveket, amik ahhoz kellenek, hogy megértsük a kriptopénzek működését. Elengedhetetlen néhány elsőre ijesztőnek tűnő definíció tisztázása, de aztán hamar kilyukadunk a kriptopénzek univerzumában.
Portfolio Prof — Bemutatkozik a Portfolio legújabb rovata! Új rovattal bővítjük a kínálatunkat: a Portfolio Prof hasábjain a napi hírek helyett a tudományos ismeretterjesztésre helyezzük a hangsúlyt. Magyarázó cikkekkel és érdekes történetekkel jövünk, amikkel bemutatjuk a szerintünk leginkább fontos gazdasági és pénzügyi jelenségeket. Nem megyünk el szó nélkül a legforróbb pénzügyi technológiák és újdonságok mellett sem, sőt, ezen felül rajta tartjuk a szemünket az ígéretes kutatásokon is. Kövesd a Portfolio Prof-ot a Facebookon!
Ezek a hozzávalók kellenek
A kriptopénzek működésének megértéséhez először néhány alapfogalommal kell megismerkednünk a kriptográfia világából. A téma kezdetben ugyanis nem szól másról, mint bizonyos kriptográfiai megoldások okos egymásra építéséből. Első körben négy építőkockára van szükségünk ahhoz, hogy eljussunk egy egyszerűbb kriptopénzig:- Kriptográfiai hash függvény
- Hash pointer
- Digitális aláírás
- Publikus kulcsok, mint azonosítók
1. A hash jelentését elkerülhetetlen megértenünk ezen a területen, ezért vele kezdjük az építkezésünket. Egy olyan függvényre gondoljunk, ami képes bármekkora bemeneti adatból (mondjuk egy egész könyvből) fix hosszúságú kimenetet képezni. Lényeges, hogy ezt a fix kimentet ésszerű időn belül legyen képes előállítani, amellett, hogy biztonságosan teszi ezt. E biztonság egyik kulcsmozzanata pedig az, hogy a hashből ne lehessen mai körülmények között visszafejteni az eredeti üzentet, amit az tömörít.
Ezeken felül még elvárjuk a hash függvényünktől, hogy két egymástól különböző tartalomból ne készítsen azonos hash kódot, vagy legalábbis ésszerű időn belül ilyen ne történjen meg (matematikailag csak ez teljesülhet). Mindez azért fontos tulajdonság, mert ilyen esetben a hash függvényünk problémamentesen használható arra, hogy üzenetek vagy tranzakciók hosszú sorát tömörítsük velük.
Képzeljük el például, hogy van egy hatalmas bevásárlási listánk, amit ellenőrizni akarunk, hogy egyezik-e a párunk által korábban felírtakkal. Ahelyett, hogy az egészet pontról pontra leellenőriznénk, elég pusztán a kiszámolt hash-eket összehasonlítani. Ha egyeznek, akkor nem lesz veszekedés. Ez tehát egy nagyon hatékony módja annak, hogy óriási adathalmazokat könnyedén megjegyezzünk és összehasonlíthatóvá tegyünk. Ez a képesség elengedhetetlen alkotóeleme a ma közismert kriptopénzeknek. A bitcoin például az SHA-256-ot használja ezen a téren, ami 256 bites kimenteket készít.
2. A második alkotóelemünk, a hash pointer (magyarul hashelt mutató) ahhoz kell, hogy az 1-es pontban kifejtett hash-ekből olyan összetett struktúrákat hozzunk létre, amelyek például lehetővé teszik a kriptopénzek mozgását (megmutatják, hogy ki fizetett kinek). Lényegében egyszerű mutatókra gondoljunk, amik jelzik, hogy adott információ hol található. A hash pointer nem több ugyanis mint egy ilyen mutató, ami mellett a hivatkozott információ hash-je is jelen van. Ezzel amellett, hogy információkat kérhetünk le, egyben azt is megtudhatjuk, hogy valami megváltozott-e. Mindez végső soron azt teszi lehetővé, hogy olyan adatstruktúrákat építsünk (például tranzakciók sorozatát), amiket később nem lehet majd anélkül megváltoztatni, hogy arról mi ne tudnánk.
Ehhez képzeljük el fizetési adatok egy láncát, aminek az egyes elemeit ilyen hash pointerek kötik össze. Ha valaki megváltoztatja az egyik elemet, akkor a rá hivatkozó korábbi elem hash-je is megváltozik. Hiába menne még tovább egy rossz szándékú illető, hogy meghamisítsa az adatokat, a megelőző helyeken mindig látszana a változás. Az egyetlen reménye az lehetne, hogy a csalást az egész láncon viszi végig, csakhogy akkor a kezdő blokk hash-je is eltérne az indulóértékétől, amit pedig könnyen észrevehet a lánc indítója. Neki tehát elég egyedül az induló hash-értéket megjegyeznie, hogy egy akármilyen hosszúságú lánc érintetlenségéről meggyőződjön.
Ez a blokklánc alapötlete, ami a kriptopénzek fizetési rendszeréből kizárja az utólagos módosítás lehetőségén alapuló csalásokat, ami miatt ez a megoldás rendkívül elterjedté vált. Az ötlet egyébként nem pusztán a fizetéseknél alkalmazható, hanem azon területek igen tág spektrumában is, ahol valamilyen rekordok biztonságos tárolása és időben való követése a számunkra fontos.
3. A digitális aláírás ugyanazt a funkciót tölti be, mint egy hétköznapi aláírás, csak mindezt nyilván digitálisan próbálja elérni. Mit is várunk el pontosan egy aláírástól? Azt, hogy csak mi tudjuk elkészíteni, ne lehessen csakúgy levenni vagy lemásolni egy dokumentumról, ugyanakkor azt bárki hitelesíthesse. A kriptográfia ezt a feladatot úgy oldja meg, hogy két kulcsot ad az aláíró kezébe: egy titkos kulcsot, amivel az aláírást csak ő tudja elkészíteni, és egy publikus kulcsot, amivel az aláírást csak hitelesíteni lehet, de lemásolni nem (az algoritmushoz minél jobb véletlenszerűség kell, ami garantálja, hogy a titkos kulcs visszafejtése szinte lehetetlen legyen). Ha már tudunk így aláírni, akkor azzal elláthatjuk például a fentebb említett blokklánc elemeit, amik például a kriptopénzünk mozgásáról tartalmaznak fontos információkat. Hogy a bitcoin példájánál maradjuk, az ő esetében az ECDSA (Elliptic Curve Digital Signature Algorithm) elnevezésű digitális aláírást használják.4. A harmadik pontban bemutatott digitális aláírásokra építve azt a trükköt alkalmazzuk még, hogy az aláírások azonosításához használt publikus kulcsot egyben azonosítóként is felhasználjuk. Ez azért nagyon praktikus, mert így az adott aláírással ellátott üzeneteket rögtön társíthatjuk valakihez (ami által megtudhatjuk például, hogy kitől kihez megy a pénz). Ez egy fontos építőköve a decentralizált működésnek, hiszen nincs szükség senki jóváhagyására ahhoz, hogy generáljunk egy publikus kulcsot (és természetesen egy hozzá tartozó titkos kulcsot), majd azt (vagy a gyakorlatban annak a hash-jét) felhasználjuk a saját azonosítónkként. Maradva a bitcoin eseténél: amikor azt halljuk a hétköznapi életben, hogy mi a bitcoinos címe valakinek, akkor valójában egy hash-elt publikus kulccsal állunk szemben.