Bővebben a Microsoft Bitcoin-tanulmányáról

2011-11-20

Szerzők: Moshe Babaioff, Shahar Dobzinski, Sigal Oren és Aviv Zohar

Viszonylag hamar a Bitcoin-közösség érdeklődésének középpontjába került az “On Bitcoin and Red Balloons” c. tanulmányunk, amint felfigyeltek rá. Mivel azonban ezt eredetileg elméleti informatikusoknak írtuk, és ennek megfelelően leginkább a matematika nyelvén, ezért az alábbiakban egy egyszerűsített, közérthetőbb összefoglalását adjuk a tanulmánynak, kifejezetten a Bitcoin-közösség számára.

Mielőtt azonban belevágnánk, egy apró kijelentést szeretnénk még tenni: négyünk közül ketten a Microsoft Research, ketten pedig a Cornell munkatársai. Mind a Microsoft, mind pedig a Cornell jelentős mértékű szabadságot biztosít a kutatóinak a kutatási témáik megválasztása terén. A mi választásunk a személyes érdeklődésünk és kutatási terveink részeként esett a Bitcoinra. Ennek megfelelően a meglátásaink sem többek annál, amik – vagyis puszta meglátásnál, véleménynél.

Miről szól a tanulmány?

A tanulmány az információ hálózatokon belüli terjesztésre ösztönző tényezőket vizsgálja. Egy olyan fizetési modellt javasol, melynek keretében egyebek mellett az információ terjesztéséért is megjutalmazzák a csomópontokat. És bár ezt a modellt lehet alkalmazni a Bitcoin protokolljában is, és a tanulmányunkban is ez a kiemelt mintaterület, maga az elv attól még ugyanúgy felhasználható más környezetben, más hálózatokban is, így meglátásunk szerint szélesebb körű érdeklődésre is számot tarthat az elképzelés.

A vizsgálataink során azt tapasztaltuk, hogy a Bitcoin protokollja jelen formájában nem csak hogy egyáltalán nem szolgáltat semmiféle különösebb ösztönzést a csomópontoknak a tranzakcióknak a hálózatban való továbbterjesztésére, de egyes esetekben még egyenesen el is tántorítja őket ettől. A jelenlegi protokoll szerint ugyanis a csomópontok idővel kizárólag az általuk megerősített tranzakciók díjait gyűjthetik be. A tranzakciókról egymástól értesülnek. Ha az elindított tranzakciók azonnal és közvetlenül eljuthatnának minden bányászhoz, nem lenne semmi gond – azonban a Bitcoin elosztott hálózatában a jelenlegi felállás szerint ezt nem egyszerű megvalósítani. Rámutatunk arra, hogy a bányászoknak az áll érdekükben, hogy megtartsák maguknak a hozzájuk befutó tranzakciókat, mivel így nagyobb eséllyel könyvelhetik le azokat és gyűjthetik be a hozzájuk felajánlott díjakat mások helyett. Annak persze nem vehetik elejét, hogy mások mégis terjesszék a tranzakciókat, de ha saját hatsákörükben visszafogják azokat, már azzal is tehetnek legalább egy keveset a saját érdekükben. Minél több bányász kezd így viselkedni, annál tovább fog tartani, amíg a hálózat elfogad egy-egy újabb tranzakciót.

Mennyire súlyos ez a hiba?

A Bitcoin egy új rendszer, számos kihívással néz szembe, a fejlesztői is folyamatosan, kemény munkával fejlesztik. Jelenleg a Bitcoin nyilvánvalóan működik: a bányászok és a nem-bányászó csomópontok is terjesztik a tranzakciókat a hálózatban. Feltételezzük tehát, hogy jelenleg vagy egyáltalán nem áll még fenn ez a probléma, vagy ha mégis, akkor is csak elhanyagolható mértékben. A jelen helyett így sokkal inkább arra vagyunk kíváncsiak, hogy a jövőben mennyire kell majd átszervezni a Bitcoint ahhoz, hogy akkor is zökkenőmentesen működhessen tovább, ha már valóban befutott, és ennek következtében több fokozattal is feljebb kell majd skálázni, mivel ilyen körülmények az általunk említett ösztönzési probléma is jóval hangsúlyosabbá fog válni – annál inkább, minél feljebb emelkednek majd a tranzakciós díjak, és minél jelentéktelenebbé válik a blokklegenerálásokért járó állandó, rögzített összegű jutalom. Úgy gondoljuk, hogy ha a Bitcoin valóban befut, akkor a tranzakciók ellenőrzésének és továbbításának költségei is igen magasra fognak szökni, így a “hagyományos” (nem bányászó) csomópontok idővel le is állnak majd a közvetítéssel, és csak a saját maguk által indított tranzakciókat küldik majd szét. A bányászok és a Bitcoinból egyéb úton közvetlenül profitáló entitások azonban megengedhetik maguknak a magasabb költségeket, és tudják kezelni a megnövekedett terhelést is, amennyiben van motivációjuk az információ terjesztésére. Ezért javasoljuk, hogy még azelőtt kerüljenek be ezek az ösztönző tényezők a rendszerbe, hogy valóban jelentkezne a probléma, és így eleve megelőzhetjük annak a kibontakozását.

Érdemes ezzel foglalkozni egyáltalán? Főleg, ha még nyomát sem látjuk az egésznek?

Meglátásunk szerint mindig könnyebb megelőzni az előre látható, potenciális problémákat, mint utólag kezelni azokat. Még ha túl is becsüljük a probléma súlyát, akkor sem árt már jó előre készen állni a válaszokkal és a megoldásokkal, hogy azonnal alkalmazhassuk őket, ha bármikor mégis szükség lenne rájuk.

Annál is inkább, hogy a bitcoin mégiscsak egyfajta pénz – márpedig mai világunkban a pénzeink értéke igen nagyban függ attól, hogy az emberek mit várnak azoknak a jövőjétől. Éppen ezért hisszük úgy, hogy a bitcoinnak csak jót tehet az, ha minél hamarabb előre látjuk és már előre orvosoljuk is a lehetséges későbbi hibáit, mivel ezzel is csak még megbízhatóbbá tehetjük, és tovább fokozhatjuk az esélyeit a sikerre.

Mennyire költséges a tranzakciótovábbítás? Ha jelenleg is továbbítják őket önzetlenül is, akkor később miért nem fogják?

A Bitcoint nagyon sok elszánt és lelkes egyén támogatja, akik mind érdekeltek a sikerében. Rengeteg időt és energiát is ölnek bele, sőt, még a személyes számítókapacitásuk egy bizonyos hányadát is a hálózat üzemeltetésére fordítják. Valamennyire persze tényleg orvosolja a problémát a puszta önzetlenség is, de meglátásunk szerint érdemes lenne ennél azért valamivel szilárdabb alapokra helyezni a rendszert. Több, mint valószínű ugyanis, hogy ahogy emelkednek majd a költségek, úgy lesznek egyre kevesebben az önzetlen támogatók.

Tegyük fel például, hogy a Bitcoin valóban befut, és rengetegen használják napi rendszerességgel, így jelentősen megugrik a tranzakciók száma és értéke is. Vegyük például a Bitcoin Wiki skálázhatóság oldalán lefestett helyzetet, amikor is a Bitcoin hálózatának már ugyanannyi tranzakciót kell majd kezelnie másodpercenként, mint amennyit a Visáénak jelenleg (és egyesek szerint még ez is egy igen súlyosan alulbecsült érték). A jelenlegi protokoll szerint ez esetben is minden tranzakció ugyanúgy szétküldésre kerülne az egész hálózatba. Ilyen körülmények között akár 1GB-ra is rúghat a hitelesített tranzakciókat tömörítő blokkok mindegyikének a mérete, így a teljes blokkláncot rögzítő és vezető csomópontoknak irdatlan mennyiségű adatot kell eltárolniuk, valamint 10 percenként egy gigabájtos forgalmat kezelniük. (Sávszélesség tekintetében ez valójában nem jelent akkora problémát.) Mindemellett azonban a csomópontoknak a továbbítandó tranzakciókat – vagyis azoknak a kriptográfiai aláírásait – is ellenőrizniük kell továbbítás előtt, és ehhez is igen jelentős mértékű számítókapacitásra lesz szükség.

Ha a továbbító csomópontok nem tárolják a teljes blokkláncot, és nem ellenőrzik az aláírásokat, akkor csak ellenőrizetlen tranzakciókat továbbíthatnak. Ez pedig egyben azt is jelenti, hogy könnyen vissza lehet élni velük, és fel lehet használni őket a hálózat DoS-os betámadására (amikor is a támadók töméntelen mennyiségű hamis tranzakciót generálnak, elárasztva velük előbb a csomópontokat, majd azokon keresztül az egész hálózatot).

Ez pedig már valóban igencsak költséges lenne mindenkinek, és egyfajta “közlegelők tragédiájához” vezetne: mindenki jobban jár ugyan, ha mindenki közvetíti az információkat, viszont ezért igen magas árat is kell fizetnie mindenkinek. Másfelől azonban, ha egy csomópont nem továbbítja a tranzakciókat, azzal önmagában még nem okoz különösebb kárt (bizonyára feltételezi, hogy a többiek úgyis továbbítják majd azokat helyette is), így egyes felhasználók dönthetnek úgy, hogy a maguk részéről inkább elkerülnék a költségeket.

Ezzel szemben azonban a bányászok nem állíthatják le a gépeiket – viszont ahogy az fentebb is említve lett, azt megtehetik, hogy megtartják maguknak a hozzájuk befutó tranzakciókat, mivel okkal remélhetik, hogy ezáltal jobban járhatnak.

Pontosan miből is áll a javasolt megoldás?

Viszonylag egyszerű: részesüljenek díjazásban a csomópontok a tranzakciók közvetítéséért is. Hasonló módszert alkalmazott a DARPA hálózati kihívása során az MIT győztes csapata is. Azt javasoljuk tehát, hogy a végső, hitelesítő csomóponthoz vezető útvonalat alkotó közbenső csomópontok is kapjanak valamennyi juttatást az erőfeszítéseikért. Ez így arra ösztönzi őket, hogy minél több szomszédjukhoz juttassák el a hozzájuk befutó tranzakciókat, bízva benne, hogy nekik is csurran-cseppen majd valami, ha a szomszédjuk (vagy azok valamelyik szomszédja, stb.) végül sikeresen hitelesíti azokat.

Tanulmányunkban a legnagyobb figyelmet annak szenteltük, hogy hogyan lehet úgy megformálni ezt a rendszert, hogy az a lehető legjobban ellenállhasson az ún. “Sybil-támadásoknak“: ha ugyanis nem vagyunk elég óvatosak, úgy egyes bányászok ide-oda ping-pongoztathatják a tranzakciókat két általuk üzemeltetett csomópont között, felhízlalva így a saját jutalmukat, és minimalizálva másokéit.

A kifizetés lényegében ugyanúgy működhetne, mint a tranzakciós díjak jóváírása jelenleg: a blokkláncba ágyazottan, és a kriptográfiai aláírások gondoskodnak róla, hogy mindenki megkapja a maga jussát. Erre többféle alternatívát is kidolgoztunk; ezek közül az egyik a következőképpen nézne ki:

A tranzakciót kezdeményező csomópont felajánl x BTC díjat (x lehet akár 1-nél kevesebb is). Ennek a fele azt a bányászt illeti, aki végül sikeresen blokkba foglalja majd a tranzakciót, míg a másik fele az ehhez a bányászhoz vezető utat alkotó közvetítő csomópontok között oszlana el egyenlően. A kezdeményező csomópont választja meg továbbá a tranzakció számára még engedélyezett ugrások (hoppok – nevezzük ezt H-nak) számát is. A H ugrásnál messzebb lévő csomópontok már nem részesülhetnek a továbbítási jutalomból, így ők már vélhetőleg nem is adják majd tovább a H-csúcspontjukat már elért tranzakciókat. Ez a korlátozás így elsőre talán furcsának tűnhet, de mégis fontos eleme a tervnek; általában ugyanis már kisszámú ugrással is be lehet járni a hálózat nagy részét, amennyiben elég nagy az összefonódás.

Így pedig már könnyen kiszámítható, hogy a hitelesítő bányászhoz vezető útvonalat alkotó továbbítási láncolat minden egyes tagja egységesen x/(2H) részesedést kap. Az esetlegesen még fennmaradó plusz továbbítási díjat szintén a szerencsés bányász teheti zsebre extraként. A tanulmányunkban játékelméleti állításokkal bizonyítjuk, hogy ez a modell mindaddig elegendő ösztönzést biztosít a továbbításra, amíg a kezdeményező csomópont elég sok szomszédjához juttatja el a tranzakcióját.

Ez a megoldás optimális? Mekkorák a költségei?

Természetesen ennek is megvannak a maga költségei, és nem kizárt, hogy lehetnek jobb megoldások is.

Először is szükség lenne ugyebár egy minimális plusz fizetésre a továbbítás díjazására, de ez nem túl jelentős a bányászok díjazásához képest.

Másodszor a protokoll is egy kissé komplexebbé válna, mivel így a továbbítási láncolat is beágyazódna a blokkláncba, tovább növelve így annak a méretét. Mi több, az üzenet továbbításhoz is még több kriptográfiai kulcsot kellene ellenőrizni.

Bízunk benne, hogy a jövőben is foglalkoznak még ezzel a kérdéssel mások is, és talán előállnak majd alternatív megoldásokkal is.

Forrás: Microsoft Research

A lap szövege Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 3.0 licenc alatt áll, felhasználni csak forrásmegjelöléssel, és ide mutató linkkel szabad.