Hogy kell csokit venni bitcoinért? Hogy kell ebből iszonyúan meggazdagodni? És ha nincs kedvünk bányászni? Egyáltalán, hogy működik egy titkosított, központi bank nélküli, virtuális pénz? Schaffer József összefoglalta az egészet magyarul.
Bitcoin – a hálózat és maga a protokoll
bitcoin – a pénz
A bitcoin egy olyan virtuális pénz, amit a Bitcoin hálózatra önkéntesen csatlakozott számítógépek működtetnek. Ennek a hálózatnak nincs semmiféle központja, vagy ellenőrző testülete, nem nagyon lehet ellene mit tenni, betiltani, leállítani, vagy korlátozni. Nincs ugyanakkor ügyfélszolgálata, a hozzá nem értésből fakadó vagyonvesztésért nem is áll helyt senki.
Satoshi Nakamoto fektette le a rendszer alapjait 2009-ben, az első néhány szoftverváltozatnak ő is volt még a fejlesztője. Nakamoto 2010-ben ugyan teljesen eltűnt, viszont mielőtt elnyelte volna a titokzatos köd, munkáját átadta néhány addigra a projekt mellé állt fejlesztőnek, akik nyílt forráskódú szoftverként aktívan fejlesztik a platformot azóta is. Ők azok, akik biztosítják, hogy a protokoll és a Bitcoin szellemisége hű maradjon az eredeti elképzeléshez, biztonsági frissítéseket adnak ki és magát a szoftvert fejlesztik.
A hálózat a rajta történt pénzügyi tranzakciók (Tx) egy csoportját blokkokba foglalja, a blokkok pedig egymásból következő láncot alkotnak (Blockchain). Ez a Bitcoin főkönyve, ahol az összes tranzakció folyamatában látható, vagyis bármelyik bitcoin fogadó címet végigkövethetjük egészen a keletkezésének pillanatáig. A Blockchain teljesen publikus, akár valós időben is nézhetjük, milyen pénzek hova mozognak, csak azt nem tudjuk, melyik cím mögött ki áll, mint tulajdonos. Az anonimitás biztonságát a név nélkül generálható számtalan cím adja.
A Bitcoin egy publikus-privát kulcspáros aláírású titkosítást használ az egyes címeken levő egyenlegek felnyitásához. Amikor elindítunk egy Bitcoin kliensprogramot, rögtön készít nekünk egy publikus fogadó címet és egy hozzá tartozó jelszót (privát kulcsot). Csak ez a kulcs teszi hozzáférhetővé a hozzá tartozó publikus címen levő egyenleget.
A hivatalos Bitcoin kliensprogram (Bitcoin-Qt), azt mondja, hogy a felhasználónak nem kell foglalkoznia a kulcsaival, egyszerűen egy digitális pénztárcát (wallet) tart nyitva nekünk, abban akárhány fogadó címet készíthetünk magunknak és elég, ha ezt az egészet jelszavazzuk le magunknak, az adatbázis fájlt (egy Berkeley DB típusú fájl wallet.dat néven) és annak tartalmát elrejti előlünk.
Ettől függetlenül fontos megérteni, hogy a walletben létrehozott minden Bitcoin fogadó címhez tartozik egy, és csakis egy, privát kulcs. Ha például 5 különböző fogadó címet gyártottunk magunknak a Bitcoin klienssel, akkor mind az 5 privát kulccsal rendelkeznünk kell ahhoz, hogy a pénzünkhöz hozzáférjünk.
Jó tudni, hogy nem kell egyébként ismernünk a privát kulcsunkhoz tartozó publikus címet, hiszen a publikus cím, és a címen levő tranzakciók összessége, a Blockchainből automatikusan származtathatók. Könnyedén megtehetjük azt, hogy a privát kulcsainkat “felírjuk a tenyerünkre”, amit bármikor, bármilyen számítógépen, bármilyen környezetben könnyedén beolvashatunk és hozzáférhetünk a rajta levő pénzhez.
A bitcoin pénzt nem veri pénzverde és nincs mögötte semmilyen központi kibocsájtó szervezet sem, mégis szükség van arra, hogy valamilyen módon létrejöjjön a pénz, illetve magát a hálózatot is működtessék önkéntesek.
Nakamoto azt találta ki, hogy azok, akik hajlandóak a rendszer működtetésében részt venni, jutalmul pénzt teremtenek. Blockchain blokkonként 50 bitcoin a jutalma annak, aki a következő blokkot el tudja készíteni. Azok, akik a blokkon dolgoznak, illetve a blokkok ellenőrzését végzik és végeredményben a hálózatot működtetik, a bányászok (minerek), a folyamat neve pedig a bányászat (mining).
A jutalmat érő összeg 210 ezer blokkonként, kb. 4 évente, mindig feleződik. A mai napig eddig egyszer feleződött, így most 25 BTC az egy blokkért járó jutalom. A módszerrel 21 millió Bitcoin kerülhet forgalomba, amit a hálózat kb. 120 év múlva ér el.
A minerek azon versenyeznek, hogy mi legyen a pénzügyi tranzakciók következő blokkja, amit a hálózat beépít a Blockchainbe. Ehhez egy kellően nehéz matematikai problémát (proof-of-work) oldanak meg, amivel igazolják a teljesítést és a jóhiszeműséget. Minél több miner van a hálózaton, annál nehezebbé válik ez a matematikai probléma, de mindig éppen annyira nehéz csak, hogy kb. 10 percenként átlagosan érkezhessen egy-egy megfejtés.
Ez két célt szolgál: egyrészt eldönti azt, ki kapja meg az érte járó pénzt, másrészt segíti kiszűrni azokat, akik meg akarják hamisítani a könyvelést. (A hamisítónak ugyanis a becsületes minereknél nagyobb számolási teljesítménnyel kellene rendelkezniük.)
Első pillantásra egy központi szervezettel és rendszerrel nem rendelkező hálózaton meglehetősen bonyolultnak tűnik a pénzügyi tranzakciók valódi könyvelését megvalósítani. Hogyan lehet tudni, melyik tranzakció melyik után jött, hogyan lehet megbizonyosodni arról, hogy egy tranzakció valódi stb.
Nakamoto a Bitcoin protokolljában nagyon elegáns megoldást mutatott be erre a problémára: a pénzügyi tranzakciók mindig egy digitálisan aláírt láncot alkotnak, ahol pontosan lehet tudni, hogy mi volt az előző tranzakció egészen addig visszavezetve, ahol egy miner eredetileg kibányászta azaz kibocsájtotta az összeget. A hálózaton levő pénz tehát nem más, mint a tranzakciók egymásból következő láncolata.
Amikor egy kliensprogramból pénzt küldünk egy címre, a tranzakciónk azonnal szétterjed (propagálódik) a teljes hálózaton és eljut egy minerhez is előbb-utóbb. A miner, ha új tranzakciót kap, először megnézi, hogy digitálisan megfelelően aláírt-e, van-e visszaigazolt előzménye a Blockchainben, illetve, hogy nem akart-e valaki több pénzt elkölteni az egyenlegénél. Ha kielégítik a válaszok, a tranzakciót hozzáadja a saját maga általa éppen fejtett blokkhoz. Ez után áll neki a matematikai probléma megfejtésének, ami leginkább egy véletlenszerű lottóra hasonlít.
Ha egy miner blokkjának megfejtése kielégíti a hálózat által szabott feltételeket, bejelenti a megfejtést és az új blokk körbeszalad a hálózaton.
A többi miner végignézi, hogy az új blokkban levő digitális aláírások helyesek voltak-e, nem akartak-e több pénzt elkölteni. (Elképzelhető ugyanis, hogy ritkán egy olyan miner nyert a lottón, aki hamis tranzakciókat próbált becsempészni.) Ha a miner talál olyan tranzakciót, aminek nincsen előzménye a láncban, vagy több pénzt akartak elkölteni az egyenlegnél, egyszerűen eldobja a blokkot. Ha minden rendben van, akkor fogadja csak el igazinak és szórja ki a saját tranzakciói közül azokat, amik már szerepeltek ebben a most készre jelentett blokkban.
A Bitcoin kezdeti időszakában szinte kizárólagosan bányászat útján jutottak pénzhez a felhasználók. Eleinte még CPU-val számoltak, később a hash műveletek nagy mennyiségű számolásához hatékonyabb GPU-ra tértek át, ma pedig már a hash-t számoló célhardverek azok a minerek, amik tudnak pénzt csinálni.
A miner program futtatása célhardver nélkül ma már egyáltalán nem ésszerű dolog. Annyian csinálják, olyan erős számítógépkapacitással, hogy annak az esélye, hogy pont mi fogjuk megtalálni a blokk megfejtését, praktikusan egyenlő a nullával.
A bányászok ezért általában csoportokba szerveződnek (pool), így ha a poolban levő egyik gép (node) sikeresen találja meg a blokk megfejtését, a pool szoftvere valamilyen arányban szétosztja a nyereményt a tagok közt, így mindig kap valaki valamit. Érdemes poolban bányászni, sőt, ma már csak így érheti meg, hiszen így a bányászok a redkívül ritka nagy bevételek helyett folytonos, de kisebb jövedelemhez jutak.
Bitcoint lehet vásárolni is akár közvetlenül egy magánszemélytől (over-the-counter, OTC market), vagy akár kereskedőházban brókeren keresztül (legnépszerűbb az Mt.Gox). Az OTC piac előnye, hogy könnyen hozzáférhető, akár személyesen a városban is elintézhető az utalás egy netkávézóból, míg a bróker hagyományos pénzintézetként egy sor személyes adatunkat elkéri és adott esetben kiadhatja a hatóságoknak. Erre még nem volt egyébként példa az Mt.Gox japán székhelyű vállalat esetében.
Egyre nő azoknak az elfogadóegységeknek a száma, ahol lehet BTC-vel fizetni, de ma még inkább csak hírértéke van annak, ha valaki elfogadja ezt az új fizetőeszközt. Egyelőre még nagyon volatilis, néhány nap leforgása alatt is hatalmas ingadozásokra is képes a dollárban kifejezett árfolyam.
Lehet befektetésként is kezelni, egészen addig, ameddig van a bitcoinnak forgalmi értéke. Ma még nem lehet megmondani, hogy ez meddig fog tartani, illetve hosszú időn át fenntartható-e a platform növekedése, vagy átveszi-e a helyét valamilyen másik hasonló kezdeményezés, esetleg valamilyen teljesen más technológiai paradigmaváltás teszi múlandóvá.
Ha elindítjuk a Bitcoin-Qt hivatalos kliensprogramot, a gépünk felcsatlakozik a Bitcoin hálózatra, ráfog néhány másik gépre, és egy csomópont lesz belőle. A Qt ezután letölti a teljes Blockchaint. Ez nagyjából 15-16 gigabyte adatmennyiség, ezért eltart jó néhány napig, mire végez. Addig nem is fogunk tudni azokhoz a címekhez tartozó egyenlegekhez hozzáférni, amit nem töltött még le. Egyes kliensprogramok, mint például a Multibit, megelégszenek a blokklánc fejléc adatainak letöltésével. Léteznek böngészőből elérhető webes pénztárcák is, de azok használata a folyamatos támadások miatt nem javasolt.
A hash nagyon leegyszerűsítve egy olyan matematikai eljárás, ami egy tetszőleges üzenetből készít egy kellően egyedi, fix méretű, az eredeti üzenetet azonosító ellenőrző kódot, egyfajta digitális ujjlenyomatot. Ez arra való, hogy az üzenet tartalmának ismerete nélkül meggyőződhessünk arról, hogy az üzenet változatlan. A hash egyébként nagyon kis eltérés esetén is nagyon független kódot állít elő.
Nagyon jól lehet például jelszavakat tárolni és visszaellenőrizni ennek segítségével. A rendszert üzemeltetőnek nem kell ugyanis tudnia, mi volt a felhasználói jelszó, elég csak a hash értéket tárolni. Amikor a felhasználó belépéskor beírja a jelszavát, a jelszó hash értékét elég összehasonlítani a tárolttal, ha azonos a kettő, megegyezik a két jelszó.
A miner a blokkot speciális pénzügyi tranzakcióval kezdi: beleírja a saját címét, hogy hova kéri az esetleges jutalmat (coinbase), a blokk tartalma mögé pedig ír egy értéket (nonce). Ennek az egésznek kiszámolja a hash-ét és megnézi, hogy ez a hash teljesíti-e a Bitcoin hálózat meghatározott célértékének (target) feltételét. Ha nem, akkor a nonce-ot megnöveli eggyel, aztán újra leszámolja a hash-t, és így tovább, remélve azt, hogy előbb-utóbb sikerrel jár. Mivel bármilyen üzenet hash értéke teljesen véletlenszerűen változik, az egész folyamat leginkább lottózásra hasonlít, ahol minden számolás egy húzással egyenértékű.
Az is előfordul, hogy egy blokk mellett egy alternatív blokk (fork) is helyes megfejtést ad. Ilyenkor a Bitcoin azt mondja, hogy mind a kettő fork érvényes és mind a kettőben szereplő tranzakciókat nyilván kell tartani. Azt is mondja ugyanakkor, hogy a minereknek mindig a hosszabb (matematikailag nehezebb) láncot kell kiegészíteniük. Ilyenkor a két fork közül valamelyikhez úgyis előbb épül egy új blokk, onnantól pedig az lesz a hivatalos lánc.
Egy tranzakció a Blockchainben akkor számít megtörténtnek, ha benne van a leghosszabb láncban és legalább 5 visszaigazolt blokk jön még utána (összesen “6 confirmations”). Ha egy blokk átlagosan 10 perc alatt kerül be a rendszerbe, akkor ez azt jelenti, hogy egy óra múlva számíthatunk arra, hogy a tranzakciónk egészen biztosan a Blockchain részévé vált megmásíthatatlanul.
Központi szerver használata nélkül picit körülményes a hálózatot életben tartani, de szerencsére több módszer is van arra, hogy egy új kliens kitalálja, hogy hova kapcsolódjon fel. Elsődleges indításkor a program néhány előre belekódolt, állandóan aktuálisan tartott címre látogat el, ahonnan megkapja a node-ok listáját. Érdekesség, hogy a 0.8.2 verzióig még IRC-n keresztül hirdették magukat a hálózaton levő node-ok.
Általában egy hálózati kliensprogram az otthoni router mögött passzív, azaz csak kifelé tud sugározni, befelé nem enged kapcsolatot. Ez elegendő ahhoz, hogy adatokat továbbítson, vagy például a Blockchain új részeit letöltse, de nem elég ahhoz, hogy teljes értékű, aktív node legyen. Szerencsére sokan futtatnak ilyen teljes értékű node-ot az interneten.
A rövid válasz: ma már bitcoint otthoni eszközökkel nem érdemes. A bányászati tevékenység annyira kompetitívvé vált az utóbbi időben, hogy az ideiglenesen stabilizálódott árfolyam mindig teljesen kiegyenlítetté, ha nem veszteségessé, teszi az áram és hardver igényes otthoni bányászatot. Akkor válik kifizetődővé, ha az árfolyam elindul tartósan felfelé és a minerek is lemorzsolódnak, vagy valaki szert tud tenni belátható szállítási idővel egy új generációs dedikált miner hardverre. Sajnos ezek elérhetősége, szállítási ideje és ára is hasonlít a Bitcoin lottóra.
Aki meg akarja hamisítani a rendszert, annak fel kell tudni mutatni egy proof-of-work által leigazolt, de hamis blokkot, valamint el kell tudni érni, hogy az ő általa indított blokklánc legyen a hivatalos – vagyis folyamatosan gyorsabban kell tudnia blokkokat készre jelenteni, mint a teljes hálózat. Ha egy korábbi könyvelt tranzakciót akar megváltoztatni, ahhoz pedig újra kellene tudni írni attól a blokktól kezdve a teljes láncot.
Egy Bitcoinon elköltött pénzt nem lehet sztornírozni, ha véletlenül elutaltunk valakinek egy összeget, akkor csak úgy kaphatjuk vissza, ha a címzett visszautalja nekünk.
A minerek csak azt ellenőrzik, hogy az összeg valóban költhető legyen, így végeredményben előrefelé történő ellenőrzés nem történik, a rosszul címzett bitcoin örökre elveszett.
Ha valaki elveszti a címhez tartozó privát kulcsát, akkor sem ő, sem más nem tud már hozzáférni a címen levő bitcoinokhoz, ez tehát a teljes rendelkezésre álló bitcoin mennyiséget csökkenti. Már ma is rengeteg használaton kívüli, vagy annak tűnő publikus cím van.
A privát kulcs ismeretében bárki hozzáférhet és elköltheti a publikus címhez tartozó bitcoin egyenleget, ezért kiemelt gondot kell fordítani a megfelelő biztonsági intézkedések megteremtésére. A Bitcoin használók továbbá javasolják azt is, hogy minden tranzakcióhoz más és más fogadó címet használjunk, hogy ezáltal is nehezebben követhetővé tegyük, hogy melyik címek tartoznak egy tulajdonoshoz.
Egyes kliensprogramokban eldönthetjük, hogy akarunk-e tranzakciós költséget fizetni, vagy sem. Ha akarunk, akkor nagyobb az esélye annak, hogy a minerek a tranzakciós költséget felvállalt tranzakciókat előrébb veszik. Ha nem akarunk fizetni semmit, akkor lehet, hogy hosszú órák is el fognak telni, mire megkapjuk azt, hogy hat blokk messzire jutott a tranzakció a láncban.
Mivel a frissen teremtett bitcoin mennyiség egyre kevesebb lesz, a tranzakciós költségek kis mértékben, de folyamatosan nőni fognak, hogy ezzel is kompenzálják a minerek munkáját.
A gyakorlatban minden utalásnak van valamennyi tranzakciós díja, amit a hálózat annak a minernek ad oda, aki azt a blokkot fejtette meg, amiben a tranzakció benne volt. Amikor elutalunk valakinek egy összeget, a tranzakciós díjat is levonja a rendszer az egyenlegünkből.
Ha van 10 BTC-nk és elutalunk belőle 1-et valakinek, akkor a Bitcoin-Qt program ugyanabban a tranzakcióban két dolgot könyvel le: az 1-et elküldi a címzettnek, a 9 visszajáró BTC-t pedig egy teljesen új címre könyveli át nullázva az eredeti címen tárolt egyenleget.
Ez például azt is jelenti, hogy ha egy paper walletünk van kinyomtatott privát kulccsal és azt visszaolvassuk a számítógépre, elköltünk róla valamennyi pénzt, akkor az eredeti privát kulcson szereplő egyenleg nulla lesz!
Ilyenkor természetesen a walletünkben levő kulcspárok száma is megnő. Erről persze nem kell tudnunk, a kliensprogram lekezeli nekünk a dolgot, de akkor nagyon is tisztában kell lennünk vele, ha paper walletet tárolunk. (Érdemes a megtakarítás típusú címeken elhelyezett bitcoint teljesen elkülönítve tárolni minden mástól, még akár a kliensbe se importáljuk be azt a kulcsot, nehogy véletlen egy tranzakció következtében hozzányúljon a program!)
A Bitcoin volt az első központ nélkül rendelkező virtuális pénz. A vitathatatlan sikere óta egyre-másra szaporodnak ugyanabból a kódbázsiból hasonló, de picit más paraméterekkel működő pénzek (alt, vagy fork). Az egyik legsikeresebb a Litecoin, ahol egy tranzakció visszaigazolása csak 2,5 percig tart és leghatékonyabban GPU-val lehet bányászni.