Az 2016. év legmenőbb szavai között találhattuk a bitcoin, a kriptovaluta és a blockchain szavakat. Olyan emberek társaságában is egyre gyakrabban felmerült, akik alapvetően nem is értik a jelentését vagy nem rendelkeznek informatikai ismeretekkel. Ez a poszt elsősorban nekik szól. Azoknak az embereknek, akik nincs semmilyen előismeretük, de szeretnék tudni. Nem csak tudni, meg is érteni, hogy mégis mi folyik itt a Bitcoin világában.

Bitcoin születése

Mielőtt nekifogunk a bitcoin születésének bemutatásába, először meg kell ismernünk a blockchain rendszer működését. Első lépésként fontos megértenünk magát a problémát, amelyre a blockchain megoldást nyújt. Lévén, hogy a blockchain rendszernek köszönhetően született meg maga a Bitcoin is.


Fontos: A példákból kihagyom a számítógépek világát, hogy a példák egyszerűek legyenek és könnyebben megértsük a kialakult helyzetet.


 

Vegyünk egy alapvető helyzetet. Képzeld el, hogy a legjobb barátod, Prashan, elutazik külföldre és a nyaralása végéhez érve már számítasz rá, hogy megcsörrenjen a telefonod: “Barátom, kéne egy kis pénz. Elköltöttem az összeset.”

“Oké Prashan, utalok neked” – válaszolsz mosolyogva.

Felhívod a bankszámlát vezető bankod kapcsolattartóját, és mondod neki, hogy “kérlek utalj 100 ezer forintot a számlámról Prashan számlájára.”

“Rendben” – válaszolja a kapcsolattartó.

A kapcsolattartó megnyitja a nyilvántartást, ellenőrzi, hogy a számlaegyenlegeden van-e 100 ezer forint. Amennyiben igen, a kapcsolattartó nyilvántartásba veszi.

Majd ezután felhívod Prashant és elmondod: “Prashan, elutaltam a pénzt neked. Ha elmész a bankba, akkor le tudod venni a 100 ezer forintot.”

Mi történt ilyenkor?

Prashan és te is megbíztok egy harmadik félben, a bankban, aki kezeli a pénzeteket. Ellentétben a korábbi évszázadokkal, ahol postakocsival küldték és szállítottak a pénzt, itt a pénz materiális formában nem járta meg az utat. Mindössze arra volt szükség, hogy a kapcsolattartó beiktassa és nyilvántartásba vegye utalásodat. Egy olyan nyilvántartásba vétel történt, amelyre sem te, sem Prashan nem vagytok hatással, nem irányítjátok.

És itt meg  is érkeztünk a jelenlegi rendszer alapvető problémájához.

Ahhoz, hogy bizalmat fektessünk egymásba, egy különálló, harmadik féltől függünk.

Vagyis évek óta egy köztes ember és szervezet az, amelytől függtünk és amely biztosítja, hogy fennmaradjon az egymás iránti bizalom.

Rendben is van. De miért lenne ez probléma?? – kérdezheted.

A problémát az okozhatja, hogyha eluralkodik a káosz az országban, a társadalomban. Elég ha egy ember (a kapcsolattartód) vagy egy szervezet (a bankod) korrupttá válik, akár szándékosan, akár szándék nélkül.

Vegyünk néhány esetet:

  • Mi van akkor, ha a nyilvántartás, ahova a tranzakciód iktatták, elég a tűzben?
  • Mi van, ha véletlenül a banki kapcsolattartód elírja, és 1 millió forintot utal 100 ezer forint helyett?
  • Mi van, ha mindez szándékkal történt?

Blockchain rendszer

A kérdés felmerül, van-e olyan rendszer, ahol mi tudunk pénzt utalni anélkül, hogy szükség lenne bankra?

Hogy erre a kérdésre választ kapjunk, egy jobb kérdést feltenni magunknak. Gondoljunk bele egy pillanatra, mit is jelent a pénz utalása. Mindössze egy iktatást a nyilvántartásban? Ami sokkal jobb kérdés:

Képesek vagyunk-e fenntartani egy nyilvántartást egymás között ahelyett, hogy szükségünk legyen valakire (ember, szervezet), aki ezt megcsinálja nekünk?

Erre nyújt választ a blockchain.

A blockchain egy olyan módszer, amely segítségével az egymás közötti nyilvántartást tudjuk vezetni ahelyett, hogy egy harmadik félre lenne szükségünk. De hogyan működik ez a megosztott nyilvántartás?

A módszer szükséges feltétele, hogy legyen elég ember, aki ne akarjon függni egy harmadik féltől. Ez a csoport az, aki fenn tud tartani egy nyilvántartást saját magának. De mennyi az elég? Legalább 3.

Blockchain példa

Nézzünk egy példát. Feltételezzük, hogy van 10 ember (Bence, Laci, Márti és a többiek), aki fel szeretné adni a bankok okozta függést vagy bármilyen harmadik fél közreműködését. Közös megegyezés alapján, megosztják egymás számlainformációit anélkül, hogy tudják egymás személyazonosságát.

Mire van ehhez szükségünk?

  • Üres mappa
  • Üres lap
  • Toll

Az üres mappa és a lapok

Mindenki rendelkezik egy mappával, amivel elkezdheti a csoportban az együttműködést. Ahogy telik az idő és az utalások sűrűsödnek, mind a 10 ember lapokra jegyzi fel a tranzakciókat és ezeket a lapokat berakja a jelenlegi üres mappájába. Ezek a lapok testesítik meg a tranzakciók nyilvántartását.

Tranzakciók esetén

Minden, a csoportban résztvevő ember fog egy tollat és egy lapot. Mindenki készen áll arra, hogy szemfülesen jegyzetelje az egymás között zajló tranzakciókat.

Tegyük fel, hogy Laci utal 10 ezer forintot Bencének. A tranzakció megvalósulása során Laci elkiabálja mindenkinek, hogy “Akarok utalni 10 ezer forintot  Bencének, kérem, mindenki jegyezze fel a lapjára.”

Első lépésként mindenki ellenőrzi, hogy Lacinak van-e elég egyenlege, hogy elutaljon 10 ezer forintot. Ha rendelkezik a megfelelő összeggel, akkor mindenki feljegyzi a tranzakciót az üres lapjára.

Ezt követően a tranzakciót lezártnak nyilváníthatjuk.

További tranzakciók

Ahogy az idő múlik, egyre több ember kezd el utalni. Bármikor, ha akarnak egy utalást végezni, akkor bejelentik ezt a csoportban egymásnak. Majd a többiek feljegyzik a tranzakciót a lapjukra.

Ez a folyamat addig folytatódik, amíg a jelenlegi lap be nem telik és szükség van egy új lapra. Feltételezzük, hogy a lapra 10 tranzakciót tudunk feljegyezni. Amint elérjük a 10 tranzakció feljegyzését, mindenki kifogy a helyből és betelik a lapja.

Itt az ideje, hogy a betelt lapunkat berakjuk a mappánkba és egy új üres lapot vegyünk elő.

A lapok lezárása és hitelesítése

Mielőtt elrakjuk a mappába a lapunkat, le kell zárnunk és hitelesítenünk kell egy egyedi kóddal (“unique key”), amit mindenki elfogad a csoportban. Mivel mindenki ugyanazokat a tranzakciókat jegyezte fel, ezért a csoport lapjai egymás másolatainak felelnek meg. A lezárásra és hitelesítésre azért van szükségünk, hogy megbizonyosodjunk arról, hogy utólag – sem ma, sem holnap, sem egy év múlva, soha –  senki ne tudja módosítani a lapját, miután elrakja a saját mappájába. Ha egyszer azt már berakta a mappájába, akkor az ott is marad. Vagyis ha mindenki bízik a lezárás és hitelesítés folyamatában, akkor mindenki bízni fog a mappa tartalmában. Tehát maga a lezárás és hitelesítés folyamata a legfontosabb tényezője a a blockchain módszernek.

A lezárás és hitelesítést folyamatát hívja a zsargon bányászásnak (“mining”).

Nézzük meg, hogyan lehet hitelesíteni egy lapot?

Mielőtt megnézzük, hogyan lehet lezárni és hitelesíteni a lapunkat, meg kell néznünk, hogyan működik általában maga a hitelesítés folyamata.

Ennek az alapja és első lépése, hogy megtanuljuk a működését annak, amit most úgy fogunk hívni, hogy Varázsgép!

Hash Funkció

Ez a varázsgép az ún. hash függvény. (kiejtése: hes; magyarul hasítófüggvények; “Hash Function”). Az egyszerűség kedvéért nevezzük Varázsgépnek.

Feltételezzük, hogy megetetjük a 7-es számmal a Varázsgépet és a másik oldalon odavarázsolja nekünk a “aedce” kódot.

És hogy hogyan csinálja ezt az átváltást? Senki se tudja. Sőt, ami a legfontosabb, a folyamat nem visszafordítható. Ha fogjuk az “aedce” kódot, lehetetlen visszafejteni, hogy mi volt az szám, amivel megetettük a Varázsgépbe. Viszont egy nagyon fontos tulajdonsága van a Varázsgépnek: bármikor, ha a 7-es számmal etetjük meg, akkor mindig ugyanazt az “aedce” kódot fogja kiadni.

Rendben, most próbáljunk meg egy másik számot. Mi a helyzet a 27 esetén?

Ebben az esetben visszakapjuk az “56ed8” kódot. Ezek a kódok nem csak betűket, de számokat is tartalmazhatnak.

Mi a helyzet akkor, ha az alábbi kérdést teszem fel?

“Meg tudod mondani nekem azt, hogy mit kell megetetnem a Varázsgéppel ahhoz, hogy egy olyan kódot dobjon ki, amely három nullával kezdődik” Például 000de vagy 00075 vagy 000d4 vagy bármilyen másik kombinációt?

Rendben, gondoljunk akkor bele.

Ahogy mondtam, az a tulajdonsága a Varázsgépnek, hogy nem tudjuk a kódot visszafejteni. Akkor mit tudunk tenni ilyen helyzetben?

Miért ne próbálhatnánk ki az összes számot egyesével addig, ameddig el nem jutunk ahhoz a kódhoz, ami három nullával kezdődik?

Legyünk optimisták, pár ezres próbálkozás után sikerül találnunk egy olyan számot, amely megfelel az igényeinknek.

Ahogy láthatjátok, rendkívül nehéz megfejteni, hogy melyik az a szám, amelynél megkapjuk a számunkra érdekes kódot. De ezt követően hihetetlenül könnyű leellenőrizni, hogy ez a szám valóban azt a kódot adja-e ki. Ugyanis ha újra megetetjük a Varázsgéppel ezt a számot, ugyanazt a kódot adja vissza minden alkalommal.

És ez a legfontosabb tulajdonsága a Varázsgépnek (a Hash Funkciónak), hogy ha adott egy kimenő adat, rendkívül nehéz megfejteni, hogy mi bemenő adat, viszont ha adott a bemenő és a kimenő adat is, akkor nagyon könnyű igazolni, hogy a kimenő adat valóban megfelel a bemenő adatnak.

Hogyan használjuk a Varázsgépet, hogy lezárja és hitelesítse a lapunkat?

Képzeld el, hogy adok neked 2 dobozt. Az első doboz tartalmazza a 22 568-as számot. Majd a következőt kérdezem tőled: “Ki tudsz találni egy olyan számot, amit hozzáadva az első dobozban lévő számhoz, majd megetetve a Varázsdobozzal, egy olyan kódot kapunk, amely három nullával kezdődik?”

Ez a korábbi példához hasonló eset. Ezt a kérdést úgy tudjuk megválaszolni, hogy a világ összes számát kipróbáljuk.

Néhány ezer próbálkozás után meg is találjuk a 17 525-ös számot. Ha ezt a számot hozzáadjuk a 22 568-hoz (17 525 + 22 568 =40 093) és a 40 093-as számot megetetjük a Varázsgéppel, akkor az igényeinknek megfelelő kódot fogunk kapni. (Kezdődjön három nullával.)

Észrevehető, hogy a matematikai problémának akár több megoldása is lehet, de nekünk elég, ha már az első olyan számot megtaláljuk, ami a feltételnek megfelel.

Ebben az esetben a 17 525 lesz a lezáró és hitelesítő számunk a 22 568-as számhoz. Tehát ha van egy lapunk, amely a 22 568-as számmal rendelkezik, akkor ahhoz, hogy hitelesítsük és lezárjuk, rányomunk egy pecsétet a 17 525-ös számmal a lap tetejére. Amíg a hitelesítő szám és pecsét ott van a lap tetején, addig a lapunk le van zárva és hitelesítve van.

Proof of Work


Ezt a hitelesítési számot hívjuk “Proof of Work”-nek, ami azt jelenti, hogy ez a szám a bizonyítéka annak, hogy megtettük a kiszámolásához szükséges megfelelő erőfeszítéseket. A mi esetünkben most az egyszerűség kedvéért hitelesítési számnak fogjuk hívni.


Ha bárki szeretné ellenőrizni, hogy a lap tartalma változott-e, mindössze annyit kell tenni, hogy hozzáadja az oldal tartalmához (tranzakciók listája) a hitelesítési számot és megeteti vele a Varázsgépet. Ha a Varázsgép kiadja azt a kódot, ami három nullával kezdődik, akkor a tartalom nem változott meg. Viszont ha a kód nem felel meg az elvárásainknak, akkor a lap tartalmát kompromittálták és bizony el kell dobnunk.

Ezzel a metodikával fogjuk megcsinálni az összes lapunk hitelesítését, amit végül berakunk a mappánkba.

Vagyis összefoglalva ahhoz, hogy hitelesítsük a lapunkat, amely a csoport tranzakcióinak listáját tartalmazza, meg kell fejtetnünk egy olyan számot (“kifejteni, bányászni” – ezért hívják “mining”-nak a folyamatot), amit ha hozzáadunk a tranzakciók listájához és megetetjük vele Varázsdobozt, akkor egy olyan kódot kapunk, amely három nullával kezdődik.

Mindig olyan kódot kell kapnunk, amely három nullával kezdődik?

A válasz nem. Ez egy olyan kód, amit a csoport határoz meg előre. A három nullát egy példának szántam, hogy megmutassa hogyan működik a “hash funkció”. A valóságban ez természetesen sokkal bonyolultabb.

Ha egyszer a hitelesítési szám meg lett fejtve sok próbálkozás és kellő áram elfogyasztása után, akkor a lapunkat le lehet zárni és hitelesíteni lehet. Ha bármikor valaki megpróbálja a lap tartalmát a későbbiekben megváltoztatni, akkor a hitelesítési szám segítségével van lehetőségünk igazolni, hogy ez megtörtént-e.

Most hogy megismertük a hitelesítés (bányászás) általános jelentését, itt az ideje visszatérni az eredeti állapothoz. A csoportunk 10 tagjának (Lacinak, Bencének, Mártinak és a többieknek) az első lapja betelt, megtörtént a 10 tranzakció.

Amint mindenki leírta a 10 tranzakciót, kifogy a helyből, így már nem marad több helye, hogy további tranzakciókat írjon a lapja. Itt az ideje kiszámolni, azaz megfejteni a hitelesítési számot ahhoz, hogy le tudjuk zárni és elrakni a mappánkba a lapunkat. A csoportban mindenki elkezdi megfejteni a hitelesítési számot (nekiállnak bányászni). Az első, aki a csoportban megfejti a hitelesítési számot, ezt bejelenti a többiek számára.

Amint a többiek meghallják a hitelesítési számot, azonnal ellenőrzik a saját lapjuk esetén, hogy ez a szám megfelel-e számukra és valóban a szükséges kimeneti adatot adja-e? (pl. a három nullával kezdődő kód) Amennyiben igen, akkor mindenki megjelöli a lapját a hitelesítési számmal és elrakja a mappába.

De mi van akkor, ha a csoport egyik tagja, Bence, azt mondja, hogy a bejelentett hitelesítési számot ellenőrizte, és a kapott kód nem felel meg az előre megállapodott kimenettel. (pl. nem három nullával kezdődik.) Ez az alábbi esetekben fordul elő:

  • Bence félrehallotta az egyik tranzakciót, amely megtörtént a csoportban
  • Elírta az egyik tranzakciót, amely megtörtént a csoportban
  • Megpróbált maga vagy más számára csalni vagy tisztességtelen lenni a tranzakciók leírása esetén.

Bármi is legyen az oka, Bencének nincs más választása, mint elvetni az oldalt és lemásolni a csoport egy másik tagjáról, mondjuk Laciról. Hacsak nem másolja le egy másik tagról a lapot (vagyis a megfelelő tranzakciók listáját), akkor nem tudja folytatni a további tranzakciók írását, így kiesik a csoportból.

A fentiekből következik, hogy az lesz a hitelesítési szám, amivel a többség egyetért és elfogadja.

Adott a kérdés, hogy miért töltene időt bárki is azzal, hogy megfejtse a lezárási és hitelesítési számot? Miért nem dőlünk hátra és várunk arra, hogy valaki helyettünk megfejtse, majd elmondja?

Bitcoin, mint ösztönző

Itt jön a képbe az ösztönzés. Bárki, aki a csoport tagja, jogosult jutalomra. Az első, aki megfejti a hitelesítési számot, pénzzel van jutalmazva az erőfeszítéseiért. (Milyen erőfeszítést tett? A számítógépe erőforrását és energiát használt fel.)

Egyszerűen képzeljük el a helyzetet, ha Márti megfejti a hitelesítési számot, ezért meg van jutalmazva pénzzel (mondjuk 1 dollárral) a semmiből. Vagyis másképpen fogalmazva, Márti számlájának az egyenlege megnő 1 dollárral anélkül, hogy bárki másnak a számla egyenlege csökkenne.

És így született meg a Bitcoin. Ez volt az az első valuta, amit a csoport tagjai felhasználtak az egymás közötti utalásra. És mindeközben, ha valaki megfejtette a hitelesítési számot, további Bitcoint kapott jutalomként. És minél több ember birtokol Bitcoint (minél nagyobb a csoport létszáma és minél nagyobb mennyiségű pénzutalások történnek), annál jobban nő a valuta értéke. Így más emberek is szeretnének Bitcoint birtokolni, amelynek következtében még több ember akar Bitcoint, mégjobban nő a Bitcoin értéke, így még több ember akar Bitcoint és így tovább.

És ha egyszer egy lap betelik köszönhetően a tranzakcióknak számának, akkor a csoport résztvevői elővesznek egy új lapot és a folyamat így megy tovább a végtelenségig.


A lapot hívja a szakzsargon a tranzakciók blokkjának (“Block of transactions”) és a mappát pedig a lapok, azaz a blokkok láncának (“Chain of Blocks”), ez adja ki a Blockchain nevet.


És így működik a blockchain!

Az előző lap kódja

Álljunk meg egy pillanatra, még van egy dolog van, amiről nem beszéltünk.

Képzeljük el, hogy már van 5 lapunk a mappánkban, mindegyik már lezárva és hitelesítve. Mi van akkor, ha visszakeresem a 2. lapot és módosítok egy tranzakciót magam számára? A hitelesítési szám az, ami segít megbizonyosodni arról, hogy nem történt a tranzakciók listáján módosítás.

Mi van akkor, ha megváltoztatom a tranzakció listáját, majd kiszámolom hozzá az új, annak megfelelő hitelesítési számot és azzal hitelesítem és zárom le az oldalt?

Ennek a hibának a kiküszöbölésére egy pici csavart tettek bele a hitelesítési szám kiszámításába és annak megfejtésébe. Nézzük, hogy miről is van szó.

Korábban említettem nektek, hogy két dobozunk van. Az egyik szám tartalmazza a 22 568 számot és a másik doboz pedig egy olyan üres doboz, amely a hitelesítés számot fogja tartalmazni, ha megfejtettük, így kiadva a csoport által előre meghatározott kódot. (emlékeztek, hogy pl. 3 nullával kezdődjön.)

A valóságban, a blockchain rendszerben, a két doboz helyett három doboz van. Kettő előre kitöltött, és a harmadik, – ami üres és számunkra van, – hogy megfejtsük a hitelesítési számot.

És a három szám összege együtt adja ki azt az eredményt, amivel ha megetetjük a Varázsgépet, akkor utána a kód kielégíti a csoport által előre meghatározott feltételeket.

De akkor mi a harmadik szám? Az előző lap kódja.

Vagyis összefoglalva, a Varázsdobozunkkal három számot kell megetetni:

  1. A tranzakciók listáját tartalmazó számot,
  2. Az előző lap kódját,
  3. A hitelesítési számot, amit úgy kell megfejteni, hogy a csoport által előre meghatározott feltételeknek megfeleljen.

A fenti három összegét ha megetetjük a Varázsgéppel, akkor kiadja a jelenlegi lapunk kódját.

Ezzel a kis trükkel sikerült elérni azt, hogy minden lap függ az előző laptól. Ebből az következik, hogy ha valaki visszamenőleg szeretne módosítani egy oldalt (azaz a tranzakciók listáját), akkor az összes utána lévő lap hitelesítési számát meg kéne változtatni ahhoz, hogy a lánc konzisztens legyen.

Ismerve, hogy egy hitelesítési szám megfejtése milyen nehézségekkel jár, az a tény, hogy az összeset meg kéne fejtenie, gyakorlatilag lehetetlen. Vagyis a csoportban egy ember nem tud csalni.

Ami ilyenkor történik az az, hogy ő a csalással létrehoz egy másik különálló csoportot (a csalók csoportját), de mivel a többiek az ő lapját nem fogják lemásolni, a csoport nem működik tovább.


Szakzsargonnal élve: A csaló ezáltal létrehoz egy új hálózatot, de mivel az ő blokkját mások nem másolják le, így a lánc nem folytatódik.


Ebből az is következik, ha esetleg 1-2 ember átállna a csalók csoportjába és a hálózat működne, akkor sem tudják felvenni a versenyt a többiekkel. (A többiek gyorsabban fejtik meg a hitelesítési számot, mert többen, több energiát és erőforrást használnak fel.)

Vagyis mindig a leghosszabb hálózat a legbecsületesebb hálózat.

A Bitcoin rendszer gyengepontja

És itt rejlik az egész blockchain rendszer gyengepontja is. Mi van akkor, ha a 10 emberből legalább 6 csaló?

Ebben az esetben a csoport elveszti értelmét és célját. (Emlékezzünk, azért hoztuk létre a 10 fős csoportot, hogy megbízhatóan, harmadik fél nélkül, egymás közötti elszámolás útján üzleteljenek egymással.) Abban az esetben, ha a csoport legalább 51%-a csaló vagy tisztességtelen magatartásba kezd, akkor a rendszer összeomlik. (Szakzsargonban “51% Attack” néven ismert)

Ez az egyetlen gyengepontja a blockchain alapú hálózatoknak. Ez okozhatja az összeomlását is. Bár igen kevés az esélye, hogy megtörténjen, de tudnunk kell, hogy az egész rendszer működése azon alapszik, hogy a csoport többsége becsületes.

Ezzel a szakmai cikkel megismerhetted a Bitcoin születését, a kriptovaluták kialakulásának okát és a blockchain rendszer felépítését. Ha kíváncsi vagyok az Ethereumra, amely a blockchain rendszerre épül, és az okosszerződéseket használja fel, akkor érdemes elolvasnod az Ethereum világa cikkemet.

A farkasdezso.hu oldalát Farkas Dezső üzemelteti. Kérlek ismerd meg a történetemet, és ha szeretnél további szakmai és személyes cikket olvasni a jövőben, kérlek Támogass!

Farkas Dezső az F.W. Olin Graduate School of Business, Babson College MBA hallgatója, a Jövőt Építők Generációja Egyesület elnöke, valamint a Global Shapers Budapest Hub Alumni vezetője. Beválasztották az 50 tehetséges magyar fiatal közé. Templeton Fellow. Két TEDx előadás fűződik a nevéhez. Az ASEF Young Leaders Summit kiválasztottja Luxemburgban, valamint a Youth Leaders Forum alumnija.

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét