Baranyi Roland
2017 Május 21.
Hogyan működik a Bitcoin?
#bitcoin

A Bitcoin több különböző titkosító technológiára épül.

Ezek közül az első a nyilvános kulcsú titkosítás. Minden bitcoin a tulajdonosa nyilvános ECDSA-kulcsához kapcsolódik. Amikor valamennyi bitcoint küldesz valakinek, egy üzenetet (tranzakciót) hozol létre, melyben a fogadó fél nyilvános kulcsához kapcsolod az általad meghatározott bitcoin-mennyiséget, és amit a saját titkos kulcsoddal írsz alá. Ezt a – saját aláírásoddal hitelesített – tranzakciót küldöd aztán szét a hálózatban, mindenkit értesítve így arról, hogy az új kulcs tulajdonosára ruháztad át a szóban forgó bitcoinokat. Mindenki rendelkezik egy példánnyal a tranzakciók folyamatosan frissülő, teljes történetéből, így bárki bármikor ellenőrizheti bármely tetszés szerinti bitcoinok pillanatnyi hovatartozását.

Ezt a tranzakciótörténetet a blokkláncban (blokkok – bejegyzési egységek – egymáshoz kapcsolt hosszú sorában) vezeti a rendszer. A hálózathoz csatlakozó összes gépnél van egy példány ebből a blokkláncból, amit mindannyian folyamatosan frissítenek, sorra küldve tovább egymásnak az egyre újabb és újabb blokkokat. Minden egyes blokk az azt megelőző óta indított újabb tranzakciók egy részét tartalmazza. A blokklánc sértetlenségének megőrzése érdekében a lánc minden egyes blokkja egyben az őt közvetlenül megelőző blokk sértetlenségét is szavatolja, vissza egészen a legelsőig, az ősblokkig. Mivel minden egyes blokknak meg kell felelnie bizonyos feltételeknek, ezért nagyon nehéz érvényes blokkot generálni. Ez szavatolja a bejegyzések biztonságát, mivel így senki nem módosíthatja azokat kedve szerint, pusztán a láncnak a megfelelő helyen való megpiszkálásával.

A láncba kapcsolást és a nehézséget egyaránt az SHA256 kriptográfiai hash funkció biztosítja. A hash funkció egy szinte kiszámíthatatlan és szinte visszafejthetetlen, nagy egész számmá alakít át egy adatblokkot. E kiinduló adatblokknak akár csak a legcsekélyebb módosítása is már egy teljesen másik hash-értéket eredményez, így senki nem generálhat egy olyan adatblokkot, aminek pontosan ugyanaz a hashe, mint egy már meglévő másiké. Ezért egy rövid hash-érték birtokában könnyen megbizonyosodhatunk róla, hogy melyik az az egy bizonyos hosszú adatblokk, amelyikhez tartozik. Mivel tehát a blokkok azonosíthatóak a hashük alapján, ezért sorozatszámokat sem kell tartalmazniuk. Ez egyszerre biztosítja az azonosíthatóságot és a sértetlenség-ellenőrzést is.

A nehézségi tényező abban áll, hogy ennek a hash-értéknek egy bizonyos küszöbérték alá kell esnie. Ennek érdekében mindegyik blokkban van hely egy ún. nonce-értéknek (egy véletlenszerűen generált 32 bites mezőnek), melynek folyamatos váltogatásával más-más hash-értékeket lehet generálni ugyanahhoz a blokkhoz. Ez a folyamatos próbálgatás nagyon nagy számítókapacitást igényel. Az alacsony hash-érték egyben könnyen ellenőrizhető munkabizonyítékként is szolgál, mely által a hálózat minden egyes gépe azonnal ellenőrizheti, hogy a blokk valóban megfelel-e az elvárt kritériumoknak.

Ez a keret biztosítja a Bitcoin rendszere alapvető funkcióinak működését, mivel általuk ellenőrizhető a bitcoinok hovatartozása, az egyazon bitcoinok többszöri elköltését pedig az elosztott tranzakció-adatbázis gátolja meg.

Bitcoin-bányászat

Amint azt fentebb is említettük, igen nehéz egy újabb blokkot hozzáfűzni a blokklánchoz, mivel ez egy igen sok időt és számítókapacitást igénylő folyamat. Akkor mégis mi motiválja az embereket arra, hogy erre áldozzák az erőforrásaikat? Az, hogy akinek mégis sikerül legenerálnia egy blokkot, azt kétszeresen is megjutalmazza a rendszer: először is kap egy bizonyos, a hálózatban rögzített mennyiségű bitcoint (jelenleg 50-et, de ez az érték 210.000 blokkonként – átlagosan négyévente – meg fog feleződni), másodszor pedig maradéktalanul begyűjtheti a legenerált blokkba összegyűjtött tranzakciók elindítói által felajánlott tranzakciós díjakat.

Ez pedig – az érvényes blokkok előállítására fordított számítókapacitás munkafolyamata – nem más, mint maga a bitcoin-“bányászat”. A hálózat mindig úgy állítja be a nehézségi célszámot, hogy megközelítőleg tízpercenként kerüljön legenerálásra egy újabb blokk. Így tehát minél több a bányász, annál nehezebb lesz mindannyiuk dolga – és minél magasabb a nehézség, annál nehezebben is piszkálhat bele bárki a blokklánc hegyébe a saját blokkjaival.

A bányászat tehát nem csak a tranzakciós adatbázis karbantartásához elengedhetetlen, hanem egyben újabb bitcoinokat is bocsát a rendszerbe. A rendszer vonatkozó értékeit úgy határozták meg, hogy az elkövetkező száz év során (+/- néhány évtized) összesen 21 millió bitcoin kerüljön forgalomba. Az új bitcoinokból pedig értelemszerűen azok részesülhetnek, akik a leginkább hozzájárulnak a hálózat működtetéséhez a blokkláncolat bővítése útján.

Ha a lehető legolajozottabban szeretnél nekikezdeni a bányászatnak, úgy tanulmányozd át ezt a 10 lépéses útmutatót.

Többszörös költés

A folyamatosan generált blokklánc tekinthető a bitcoin-tranzakciók lebonyolítási sorrendjét rögzítő hálózati közmegegyezésnek. A sorba rendezésre pedig épp azért van szükség, hogy el lehessen kerülni például egyazon bitcoinok többszöri elköltését, vagy épp a számlák negatívba csúszását. Önmagában az egyes tranzakciók bejelentése még nem lenne elég a sorrendiség kialakításához, mivel így a hálózat egyes gépei más-más időpontokban értesülnének a bejelentésekről.

A hagyományos bankrendszerekkel ellentétben ezt a “tranzakciónaplót” a rendszer nem egy központi helyen tárolja, hanem folyamatosan szétküldi a hálózat minden egyes tagjának az újabb blokkokat, mely blokkok mindegyike egy korábbi folytatásának vallja magát. Így a blokkláncnak bármely adott pillanatban létezhet egyszerre több lehetséges folytatása is – sőt, még ezeknek is további alternatív folytatásai, ami így egy fa-szerű, sokfelé szerteágazó folytatásrendszert eredményez. Ebben az esetben a hálózatot alkotó minden egyes számítógépnek magának kell eldöntenie, hogy melyik ág az “igazi” – az elfogadandó és tovább bővítendő.

Ilyen helyzetben a rendszer mindig a “leghosszabb” érvényes ágat fogadja el “igazinak” – más szóval a beérkezett blokkoknak azt a sorozatát, amelynek a legmagasabb az összesített “nehézsége”, mivel erről feltételezhető, hogy ennek a legenerálása igényelte a legtöbb munkát (számítási időt). A Bitcoin rendszere számára tehát ez a sorozat jelenti majd az események “valós” sorrendjét, és ezt is fogja figyelembe venni az egyes felhasználók egyenlegének kiszámításához. A “valós” annyit tesz, hogy a Bitcoin elutasítja az olyan ágakat, amelyek vagy nem tudnak kellően fajsúlyos munkabizonyítékot felmutatni, vagy pedig érvénytelen tranzakciókat tartalmaznak (tehát például az adott időpontban megengedettnél több generált bitcoint, hamis egyenleg-érték-számítást, vagy épp a meglévő pénzmennyiségednél nagyobb összeg elköltését, stb.).

Mivel azonban folyamatosan generálódnak újabb blokkok, ezért még egy is lehetséges, hogy idővel egy másik ág hosszabbra nyúljon, mint az addigi leghosszabb. Egy ág bővítése azonban igen sok erőfeszítést igényel, a hálózat csomópontjai pedig mindig csak az elfogadott (és normál körülmények között egyben a leghosszabb) ágat bővítik tovább. Így tehát minél hosszabbra nyúlik ez az ág a második leghosszabbnál, annál nehezebb lesz a másodiknak felzárkóznia hozzá és leelőznie. Mi több, minél több csomópont értesül a leghosszabb ágról, annál valószínűtlenebbé válik, hogy egy frissen legenerált új blokkot egy másik ághoz kapcsolna a rendszer, mivel a csomópontok mindig a leghosszabbat fogadják el, és azt bővítik.

Ezért tehát minél hosszabb ideje képezi részét egy tranzakció a leghosszabb blokkláncnak, annál visszavonhatatlanabbul és eltörölhetetlenebbül is marad annak a része. Ezért nem visszafordíthatóak a tranzakciók, és ez gátolja meg a bitcoinok többszöri elköltését is. Minden egyes állítólagos utalást követően minden egyes tranzakció fogadója azonnal leellenőrzi, hogy milyen hosszúra nyúlt a kérdéses tranzakciót tartalmazó lánc, mivel minél több blokkal bővül tovább, annál valószínűtlenebbé válik, hogy bármikor is lehagyhatná bármelyik másik.

Ha a blokkláncnak a tranzakciót követő része már elég hosszúra nyúlt, úgy közel lehetetlenné válik egy másik ág számára annak a behozása és lehagyása, így a hálózat tagjai elkezdhetik valóban lezajlottként elkönyvelni a tranzakciót. Ezért szolgálnak a blokkok egyben a tranzakciók megerősítéseként is. Mert még ha egy másik ág meg is előzné a leghosszabbat, a legtöbb blokkot akkor is olyanok generálják, akiknek semmi közük az összeg feladójához, mivel kellően sokan dolgoznak a blokkok legenerálásán. Mivel a tranzakciókat a hálózat minden egyes csomópontjának elküldik, ezért ezek a blokkok is éppen olyan valószínűséggel tartalmazzák a tranzakciót, mint az előzőleg elfogadott ág blokkjai.

A Bitcoin arra az előfeltevésre épít, hogy semmiképpen sem kerítheti egyetlen entitás sem a saját kezébe (elég sokáig) a hálózat számítókapacitásának több, mint a felét. Erre lenne ugyanis szükség ahhoz, hogy tetszés szerint bővíthessék tovább bármelyik általuk választott ágat – és tegyék ezt egyben a többi ág bővülésénél gyorsabban is, a sajátjukat nyújtva így a leghosszabbra és teljhatalmat nyerve az abban megjelenő tranzakciók fölött.

47
1
További hasonló sztorik