A Bitcoin létrehozása – Megbízható főkönyv

Az alábbi cikk egy fejezet Yan Pritzker – A Bitcoin létrehozása című könyvének magyar fordításából. A tartalomjegyzéket és az ingyen letölthető változatot ide kattintva éred el.

***

MEGBÍZHATÓ FŐKÖNYV

Mostanra már tudjuk, hogy hogyan lehet fenntartani egy elosztott főkönyvet, és hogyan tudjuk frissíteni, új adatokat rögzíteni anélkül, hogy korrupció, vagy kényszerítés léphetne fel, köszönhetően a lottó-szerű rendszernek, és a konszenzusnak.

De mi történik, ha a lottónyertes az, aki becstelen lépésre szánja el magát? Képes egy bányász arra, hogy a főkönyv előző bejegyzéseit visszamenőleg megváltoztassa? Ha összeesküvést szőnek, Eve, Dave és Farrah képesek lehetnek átírni a nyilvántartásban a tranzakciókat, esetleg megváltoztatni az egyenlegeket, és plusz coinokat jóváírni maguknak?

Itt jön be a képbe a blokklánc, mint fogalom. A blokklánc valójában csak egy iparági marketing kifejezés, amely arra utal, hogy a blokkok lánc-szerűen vannak összefűzve, úgy követik egymást adott időközönként, linkekkel összekötve. Ennek a segítségével lehet létrehozni a tranzakciós történet folytonos, lineáris nyilvántartását, a coinok létrehozását és elköltését rögzítő főkönyvet, egészen a 2009-es Satoshi-féle Genesis blokktól a mai napig.

Az előző fejezetekben nem említettünk meg egy fontos dolgot, mert az egyszerűségre, érthetőségre törekedtünk. Mikor a hasheléssel foglalkozunk a Proof of Work lottózás folyamatában, tehát bányászunk, az input nem csak a tranzakciókból és a nonce értékéből áll. Hozzáadjuk még a hasht is az előző blokkból, így az általunk létrehozott, legfrissebb blokk közvetlenül összekapcsolódik az előző blokk adataival.

Tudjuk, hogy a hash funkció teljesen véletlenszerű számokat generál, de mindig attól függ, hogy milyen inputtal dolgozunk. Most tehát három különböző input kerül a blokkba:

  • Az aktuális, függőben lévő tranzakciók.
  • A nonce, egy véletlenszerűen kiválasztott szám.
  • Az előző blokkból generált hash.

A nyertes lottószámot jelentő hash tartalmazza az előző blokkhoz szükséges nyerőszámot is, így közvetlenül egymáshoz kapcsolja a két blokkot.

Ezzel lehetőség nyílik arra, hogy egy historikus nyilvántartást vezethessünk, ahol minden egyes blokk egészen a legelső Genesis blokkig visszavezethető. Mikor új blokkot generálunk, és beleírnánk egy tranzakciót a főkönyvbe, meg kell győződnünk róla, hogy az abban szereplő coinok nem lettek már korábban elköltve.

Ha megváltoznak az adatok, amelyekből a hash outputja származik, akkor maga a hash is megváltozik, mégpedig megjósolhatatlan módon, de drasztikus mértékben. Ha bármely blokk adatait módosítani akarjuk, azzal megváltozik az adott blokk hash értéke. Viszont ez a hash szerepet játszott az utána következő blokk hash-értékének a megállapításában, tehát ha megváltoztatod, az utána következők is megváltoznak. Minden blokk hash értéke hozzá van kötve az összes megelőző blokkhoz, ezt akár elképzelhetjük pillanatképként is, amely a teljes eddigi tranzakciós történetet, az összes bejegyzést egyszerre tartalmazza.

Mindenki ki tudja számolni, hogy a szükséges célszám eléréséhez mennyi energiára van szükség, hogy megtaláljuk a megfelelő hasht, így a Proof of Work használata esetén nincs mód csalásra. Ha valaki egy régebbi blokk adatait akarná módosítani, újra kellene számolnia az ahhoz tartozó hasht, elhasználva ugyanannyi energiát, mint a blokk létrehozásakor, emellett ugyanezt kellene tennie az összes utána következő blokk esetében is. Nem csak, hogy bizonyítható lenne a módosítás ténye, de extrém mennyiségű energiába, így rengeteg pénzbe kerülne ez a próbálkozás.

Gyakorlatilag a Bitcoin hálózatán minden egyes új blokk növeli a rendszer biztonságát, hiszen plusz mennyiségű energiát igényelne minden egyes új blokk újraszámolása a Proof of Work hash létrehozásához. A legtöbb felhasználó azon a nézeten van, hogy azok a tranzakciók, amelyek blokkja után már legalább hat újabb blokk létrejött, véglegesnek minősülnek. A mai hashráta ismeretében elképesztő mennyiségű energiát igényelne a legutolsó hat blokk újraszámolása egy esetleges támadás esetén. Ha pedig valaki 100 blokkra visszamenőleg szeretné módosítani az adatokat? Felejtsd el.

Mikor csatlakozol a hálózathoz, és letöltöd a blokkláncot, a főkönyvet a saját gépedre, minden egyes tranzakció minden egyes blokkban teljesen transzparens. Le tudod ellenőrizni te magad is a Proof of Work hash értékeit, hogy a személy, aki elküldte neked, hiteles másolatot küldött, semmit nem módosított rajta.