Mi az a blokklánc?

Ebben a leckében áttekintjük a bitcoin és az egyéb kriptopénzek mögöttes működését biztosító technológiát. Ez nem más, mint az előző leckében már sokat emlegetett blokklánc. Elsőre ijesztőnek tűnhet, de nem kell megijedni, elegendő, ha nagyjából átlátod a koncepciót.

A blokklánc legfontosabb tulajdonsága, hogy azokat az adatokat, melyeket benne tárolunk, szinte lehetetlen megváltoztatni. A blokklánc elnevezésben a blokkok adatcsomagokra utalnak, melyek időrendben követik egymást, a múltbéli adatokat pedig senki sem tudja önkényesen megváltoztatni.

A blokkokról részletesen

A blokkokat legegyszerűbben talán úgy lehet elképzelni, mint egy füzet lapjait. Egy blokkba bármilyen adatot írhatunk. A Bitcoin hálózat esetén ezek tranzakciós adatok:

  • az utalt összegek nagysága,
  • a címzett bitcoin címe,
  • az utalás időpontja.

De más blokkláncokon lehetnek például orvosi feljegyzések vagy akár zenefájlok is.

A blokklánc egyszerűsített ábrázolása

Egy blokk a benne tárolt adatokon kívül tartalmaz két, úgynevezett hash kódot is. A hash kód egy hosszú számsor, látszólag véletlenszerű számokkal és betűkkel. Nagyjából így néz ki:

b10de7c004412b8020e9cd8c300fec1a

A blokkon belül az egyik kód a blokk saját hash kódja, a másik pedig az előző blokk hash kódja. A hash kód tulajdonképpen olyan, mint egy digitális ujjlenyomat vagy aláírás. Mindig egyedi és segítségével pontosan azonosítható egy adott blokk. 

Amikor létrejön egy blokk, az algoritmus meghatározza a hozzá tartozó hash értéket. Ha ezt követően bármi megváltozik a blokkban tárolt adatokból, a hash értéke is megváltozik. Ezzel könnyen azonosíthatjuk, ha valaki utólagosan belenyúlt a rögzített adatokba.

Vegyünk egy példát a hash kódok változására. Így jelenik meg egy-egy szó a titkosítás során:

ág – b10de7c004412b8020e9cd8c300fec1a
Ág – ad35508a835650b8da3f811a168289c9
ég – b85e6433287a7b4440cf80a767e63fb3
Ég – 40849c0b59e763e14ae2db8609a9cdaf

Látható, hogy egy betű megváltoztatása vagy egy kis-nagy betű eltérés is teljesen más hash kódot eredményez. Ezt a folyamatot magad is kipróbálhatod az MD5 Hash Generátorral. Írj be egy mondatot a mezőbe és nézd meg, hogy milyen hash kódot kapsz. Változtass meg valamit a mondaton és figyeld meg, hogyan változott a hash kód.

Minden blokk hivatkozik az előző blokk hash kódjára, így alkotnak láncot

Egy blokk tehát így épül fel:

  • Adat
  • A blokk által generált hash
  • Az előző blokk által generált hash

Minden egyes blokk az őt megelőző blokkra hivatkozik, és ha valaki utólagosan megpróbálna meghamisítani egy beírt adatot, akkor az átírt blokkban a módosítás miatt egy teljesen új hash kód jönne létre. A régi kód, amire a lánc őt követő tagja hivatkozik, érvénytelen értéket fog adni és emiatt az átírást követő összes többi blokkban tárolt adat is értelmezhetetlen lesz. 

Az alábbi ábrán látható, középső blokk esetében rossz szándékú próbálkozás történik, látható, hogy ez nem olyan egyszerű, a változtatási kísérlet hatására az azt követő blokk hivatkozása erre, az előző blokkra nem lesz helyes:

Tehát van egy jól működő rendszerünk arra, hogy felfedezzük, ha valaki meg akarná hamisítani a blokkláncban tárolt adatokat. Ez azonban még nem elég ahhoz, hogy meg is akadályozzuk azt. Egy gyors számítógép képes lenne egy blokk adatainak átírására és az őt követő blokkok hash kódjainak újraszámolására.

A biztonság záloga, a decentralizáció

Éppen ezért került bevezetésre a PoW, a Proof-of-Work konszenzus. Ez az eljárás egy meghatározott szinten tartja az új blokkok létrehozásának idejét. A bitcoin esetében ez például ~10 perc. Ha a számítógépek ennél gyorsabban végeznék el a feladatot, akkor az algoritmus nehezít önmagán és lassítja a folyamatot, ha pedig tovább tart, akkor felgyorsítja az eljárást.

Vagyis ha valaki át akarna írni egy blokkot, akkor az ahhoz szükséges műveletek elvégzéséhez nagyjából 10 percre lenne szüksége, ez azonban csak 1 blokk átírását jelentené. A sorban utána következő blokkok hash értékének módosítására már nem volna lehetősége. 

De mi van akkor, ha valaki mégis átír egy blokkot, és onnantól minden azt követő blokk egy már nem létező hash kódra hivatkozik? Nos, ez sem olyan egyszerű. Létezik ugyanis még egy biztonsági funkció: a megosztottság, vagy más szóval decentralizáció.

Ahelyett, hogy az adatokat egy központi helyen tárolnánk, a blokkláncból tízezernyi másolat létezik egy számítógépekből álló hálózaton, melyhez bárki csatlakozhat.

A résztvevők úgynevezett csomópontokat alkotnak (node-ok), feladatuk a blokkok hitelességének ellenőrzése.

Egy új blokk létrejöttekor a hálózat összes résztvevője kap arról egy másolatot. A résztvevők ezt követően megállapodnak abban, hogy a blokkot ebben a formájában hitelesnek minősítik, és mindenki hozzáadja azt a saját maga által tárolt blokklánc másolathoz. Ha ezek után bárki módosítani akarna egy, a tagok által már hitelesített blokk adatain, a résztvevő számítógépek legalább 51%-án tárolt másolatokon kellene átírnia a kérdéses blokkot, mert amíg nem rendelkezik ezzel a többséggel, az átírási kísérletét visszautasítaná a rendszer.

Tehát ahhoz, hogy valaki akárcsak 1 karakternyi adatot is megváltoztasson a blokkláncban, az összes blokkot meg kellene változtatnia.

A támadónak ki kellene számítani a hozzájuk tartozó összes új hash kódot és meg kellene szereznie a hálózat legalább 51%-a felett az uralmat. Ennek valószínűsége rendkívül alacsony, így korábban soha nem látott szintű biztonságot jelent a blokklánc-technológia.