A blokkláncról bővebben

A blokklánc a Bitcoin (és az ahhoz hasonló kriptopénz-rendszerek) csomópontjainak közös tranzakció-adatbázisa. A teljes blokklánc kivétel nélkül magában foglalja az adott kriptopénz-rendszerben valaha is végrehajtott összes tranzakciót annak az indulása óta. Így az is könnyen – és abszolút pontosan – megállapítható belőle, hogy melyik címhez mikor mennyi érték tartozott.

A fekete blokkok alkotják a leghosszabb, fő láncot az ősblokktól a jelenlegiig. A szürke blokkok elárvultak, mivel nem kerültek be a fő láncba.

Mindegyik blokk magában foglalja az őt közvetlenül megelőző blokk hashét. Ezáltal a legelsőtől – az ősblokktól – kezdve egészen a jelenlegi legfrissebbig az összes érvényesített blokk egyetlen hosszú láncolatba kapcsolódik össze. A blokkok időrendi sorrendjét is a hashek garantálják. A blokkokat szinte lehetetlen utólag módosítani, mivel ehhez az azt követő összes többi blokkot is újra kellene generálni. Emiatt irdatlan mértékű költségekkel kell számolniuk mindazoknak, akik szeretnék többször is elkölteni egyazon bitcoinjaikat. A blokklánc a Bitcoin egyik legfőbb újítása.

A tisztességes bányászok mindig csak a leghosszabb érvényes blokklánchoz kapcsolják hozzá az újabb legenerált blokkjaikat (vagyis helyezik el azokban a leghosszabb érvényes blokklánc utolsó blokkjának hashét). A lánc “hosszát” azonban nem az abban összefűzött blokkok száma adja meg, hanem mindig azoknak a teljes, összesített nehézségi értéke (bár ennek a különbségnek csak bizonyos potenciális támadástípusok szempontjából van jelentősége). Egy adott blokklánc akkor számít érvényesnek, ha az ősblokkal kezdődik, és ha a benne foglalt összes tranzakció is érvényes.

A lánc bármely blokkjától csak egyetlen, egyenes út vezet vissza az ősblokkig, azonban az ősblokktól előrefelé indulva számos elágazást találhatunk a láncon. Időről-időre, amikor két vagy több bányász csak néhány másodpercnyi eltéréssel generál le egy új blokkot, egy újabb egyblokkos elágazás jön létre. Ilyenkor a többi bányász aszerint folytatja az egyik vagy a másik ágat, hogy melyikről értesült előbb. A lánc pedig azon az ágon fog folytatódni, amelyik elsőként bővül egy újabb blokkal, mivel ezáltal máris az lesz a hosszabb. Bizonyos visszafelé nem kopmatibilis változtatásokat igénylő hibajavítások nyomán már komolyabb elágazások is kialakulhattak.

A rövidebb (avagy érvénytelen) láncok blokkjait “árva” blokkoknak nevezzük; ezeket is eltárolja ugyan a rendszer, de nem használja őket semmire. Az elárvult blokkokba foglalt tranzakciók újra visszakerülnek a feldolgozásra váró tranzakciók közé, és így újra bekerülhetnek egy másik blokkba. Ezáltal elveszik az árva blokk legenerálásáért kiutalt 50 BTC-s jutalom is; ezért van az, hogy a hálózat csak 100 blokkal később engedi elkölteni a frissen kibocsátott BTC-ket.

Mivel bármely adott blokk csak egyetlen másik blokkot jelölhet meg az elődjeként, ezért két blokklánc soha nem fonódhat össze újra.

A blokklánc rendszerét egyéb, nem pénzügyi jellegű célokrais fel lehet használni.

Forrás: Bitcoin Wiki

——————–

Szerző: genjix (Amir Taaki)

A blokklánc a Bitcoin története – még pontosabban pedig a Bitcoin rendszerében az annak indulása óta lezajlott valamennyi pénzáramlás teljes története. Minden egyes kifizetés rögzítésre kerül ebben a blokklánc-adatbázisban a hálózat minden egyes csomópontjának merevlemezén.

A Bitcoin valamennyi felhasználója rendelkezik egy saját példánnyal ebből a globális adatbázisból/naplóból. Ez alapján ellenőrzi a szoftvered, hogy minden kifizetés rendben van-e, és hogy senki nem szegett-e meg sehol semmilyen szabályt. A Bitcoin rendszerébe való belépéssel egyrészt elfogadod annak a matematikai szabályait, másrészt pedig magad is kiveszed a részed azoknak az aktív betartatásából. Ezért van szüksége a rendszernek a könyvelésre, hogy minden tételt pontosan vezethessen és ellenőrizhessen.

Az adatbázist csak bővíteni lehet, átírni vagy mósodítani nem – soha, semmiképp. Minden újabb blokk a lánc végéhez kapcsolódik, hogy aztán maga is fogadja az utána következőt, és így tovább. Az ily módon sorba fűzött blokkokat nevezzük blokkláncnak.

Egy négyblokkos blokklánc.

Mindegyik blokk egy sor újabb tranzakciót kötegel egybe. Ha például az első blokk tartalmaz egy olyan tranzakciót, mely szerint “A küldött 10 BTC-t B-nek”, a harmadik pedig egy olyat, mely szerint “B küldött 2 BTC-t C-nek”, akkor ebből (a blokkláncból) tudhatjuk, hogy B-nek (10 – 2) = 8 BTC-je van, C-nek pedig 2.

Számokból született blokkok

Az új blokkok létrehozása nem egyszerű feladat, mivel ehhez előbb meg kell oldani egy feladványt, melyet a hálózat egy matematikai algoritmus alapján választ meg. Amint egy csomópont megoldja a feladványt, azzal máris létrehozott egy új blokkot és hozzáfűzte azt a lánc végéhez.

Ezeket a feladványmegoldó csomópontokat bányászoknak vagy generátoroknak nevezzük, bár mindkét kifejezés félreérthető; a “bányász” olyan képzetet sugall, mintha a semmiből bányásznák elő a pénzt, a “generátor” pedig nem igazán fejez ki egyáltalán semmit. A hitelesítő már sokkal jobb megnevezés. Minden újabb blokk egy sor új, a hálózat által elfogadott tranzakciót tartalmaz; ezeket gyűjtik össze, ellenőrzik és hitelesítik a hitelesítők – vagyis a blokkok létrehozói, előkészítve így egyben a helyet a következő blokknak is.

Amikor letöltöd a blokkláncot, ellenőrizned kell a blokkok és a bennük foglalt tranzakciók helyességét is:

* Egyik tranzakció sem mutat többszörös elköltést?
* Mindegyik kiadásnak megvan a megfelelő fedezete?
* Észlelhető-e nyoma bármiféle rendellenességnek?
* …

Valójában azonban a blokklánc is némileg félrevezető. Erre talán a blokkfa lenne a pontosabb meghatározás, mivel a hitelesítőknek, ha akarják, módjukban áll az újabb blokkoknak akár valamelyik korábbi blokkhoz való hozzáfűzése is. Ez azonban felesleges lenne, mivel a hálózat mindig a legtöbb számítási erőforrást igénylő láncot (amely szinte mindig a leghosszabb is egyben) fogadja el az események hiteles krónikájaként.

Persze a gyakorlatban a blokklánc csak ritkán ágazik el, és még ritkábban nyúlnak egy blokknál hosszabbra az ilyen mellékágak – bár a leghosszabb elágazás nem kevesebb, mint 6 blokkot halmozott fel. Ezért használjuk mégis a blokklánc kifejezést – mivel végső soron valóban egy hosszú lánc, aminek azonban itt-ott vannak kurta elágazásai.

A blokk létrehozásához szükséges, már fentebb is említett matematikai feladvány megoldása értelemszerűen megdolgoztatja a gépedet, aminek így plusz áramra van szüksége, ami pedig pénzbe kerül. Egy új blokk sikeres létrehozásáért azonban 50 BTC jutalmat kapsz. Ez a jutalom lesz a blokk első, úgynevezett coinbase tranzakciója. Ebből következően tehát ha a következő képlet eredménye nagyobb, mint nulla:

(50 * BTC váltási árfolyam) – áramköltség

…akkor jól jársz, vagyis nyereséget termelsz. Ez persze több szempontból is sarkítás, mivel itt egyéb tényezők is bejátszanak, mint például a megfelelő hardverek beszerzési költsége és az ebbe fektetett időd, de ezekkel itt most nem foglalkozunk, csak az alapelvet szemléltetjük.

Ahogy egyre többen csatlakoznak a hálózathoz és szállnak be a feladványmegoldó-blokkgeneráló versenybe, úgy gyorsul fel egyre jobban a lánc bővítésének folyamata – amit pedig a hálózat azzal kompenzál, hogy az összesített számítókapacitás gyarapodásával arányosan emeli a megoldandó feladványok nehézségét. Ennek következtében pedig a hitelesítőknek még több áramot kell felhasználniuk az újabb blokkok létrehozásához, és így kevesebb lesz a hasznuk is. Ha pedig túl lassan készülnek el a blokkok, akkor a hálózat csökkenti a nehézséget. A nehézség felülvizsgálatára és újrabeállítására minden 2016. blokknál kerül sor ama cél biztosítása érdekében, hogy mindig átlagosan 10 percenként készüljenek el az egyre újabb blokkok. 2016 * 10 perc átlagosan kéthetenkénti korrekciót jelent.

A hálózat tehát kéthetente ellenőrzi az éppen aktuális nehézségi szintet és dönt annak az újrabeállítása felől annak megfelelően, hogy épp gyorsítani vagy lassítani kell-e a blokkgenerálás folyamatát a megcélzott 10 perces blokkonkénti időköz megőrzése érdekében.

Újraírni a történelmet

A blokklánc újraírása pontosan azért lehetetlen, mert az új blokkok létrehozása igen nehéz feladat. Ha ugyanis át akarnám írni például egy 20 blokkból álló lánc 10. blokkját, akkor ahhoz nem elég csak a 10. blokkot átírnom, hanem annak megfelelően kell módosítanom az összes többi utána következőt is, végig egészen az utolsóig – ehhez pedig tetemes mennyiségű áramra és pénzre lesz szükségem. Jelen állás szerint a bitcoin blokklánca már annyi blokkot – számítási teljesítményt – halmozott fel, hogy annak a bármikori újraírása már most is végtelenül valószínűtlen, és minden újabb blokkal csak egyre valószínűtlenebb lesz.

Időről időre azonban megesik, hogy két hitelesítő egyszerre hoz létre egy-egy új blokkot; ilyenkor a puszta szerencsén múlik, hogy melyikükét fogadja el előbb és fűzi tovább a hálózat többsége. Ez leginkább csak annak függvénye, hogy ki generálja le elsőként a következő blokkot, és melyikhez kapcsolja hozzá a két rivális közül.

A következő blokk kulcsfontosságú, mivel minden újabb blokk exponenciálisan csökkenti az előttük lévők átírásának eséylét. Ha egy új blokk megfelezi az esélyt, akkor két blokk negyedeli, három blokk nyolcadolja, és így tovább, egyre gyorsabban közelítve az átírás esélyét a nullához (bár ténylegesen soha el nem érve azt).

Mivel az esélyek ellene szólnak, ezért ha nem sikerül szerencsésen előrelendülnie még a kezdet kezdetén, akkor annál jelentéktelenebbé válnak az esélyei, minél jobban lemarad.

Satoshi

További részleteket Satoshinak az előbb hivatkozott dolgozatában olvashatsz, ahol a szerencsejátékos csődjével és Poisson-eloszlással modellezi az új blokkokat.

Lineáris vs exponenciális

A blokkok letöltését követően a legtöbb időt az ellenőrzésük viszi el – ezért olyan lassú a blokklánc. Maga a letöltés gyors; egy jó netkapcsolattal pár perc alatt le lehet húzni a teljes blokkláncot. Az ellenőrzés az, ami igazán időigényes. Márpedig a láncot, az új blokkok tranzakcióinak folytonosságát a korábbiakkal (ConnectInputs(…) funkció) ellenőrizni kell annak érdekében, hogy kizárhassuk mindenféle csalás lehetőségét.

A tranzakciók visszakövetéséhez az elődeikkel a láncban értelemszerűen az egész láncot át kell fésülni – és minél hosszabb a lánc, annál több blokkot kell átnézni a tranzakciók hátterének ellenőrzéséhez. Ezért lassú tehát a blokklánc: minél hosszabb, annál tovább tart az átfésülése. Szerencsére azonban a hardveres és szoftveres fejlesztések folyamatosan kompenzálják ezt a problémát.

Ezen egyszerűsített modellünk alapján mondhatnánk azt is, hogy minden újabb, a lánchoz kapcsolt blokk lineárisan növeli az újabb blokkok ellenőrzésének időtartamát – ezáltal pedig polinomiálisan a teljes blokklánc ellenőrzésének időtartamát.

Forrás: Bitcoin Media