A Bitcoin létrehozása – Byzantine Generals’ Problem

Az alábbi cikk Yan Pritzker – A Bitcoin létrehozása című könyvének magyar fordítása, fejezetenként. A tartalomjegyzéket és az ingyen letölthető változatot ide kattintva éred el.

***

Hogyan oldjuk meg az elosztott konszenzus problémáját?

Elértünk a számítástechnika-tudomány egyik legnagyobb problémájához, amelyet meg kell oldani. Egy elosztott hálózaton hogyan jutunk konszenzusra, ha néhány résztvevő nem őszinte vagy nem megbízható? Ez az úgynevezett Byzantine Generals Problem néven ismert jelenség, és ez volt a kulcsmomentum, amely megoldásával Satoshi létre tudta hozni a Bitcoint. Szükségünk van a résztvevőkre, akik egyetértenek abban, hogy mit is tartalmaz a nyilvántartás, anélkül, hogy tudnánk, melyik résztvevő végezte becsületesen a nyilvántartás vezetését, és melyikük próbált csalni, kihagyni vagy hozzáadni tranzakciókat.

Az egyik, naívnak tekinthető megoldás, hogy megbízható résztvevőket választunk. Ahelyett, hogy bárki beleírhatna bármit a nyilvántartásba, kiválasztjuk egy maroknyi barátunkat, akik vezetik a könyvelést. Charlotte, Gary, Frank és Zoe lesznek a kiválasztottak, mert ők nem szoktak hazudni, és mindenki tudja, hogy még bulizni sem járnak hétvégente.

Minden alkalommal, mikor tranzakciót kezdeményeznénk, egyszerűen felhívjuk Charlotte és a többiek figyelmét erre, ahelyett, hogy elmondanánk mindenkinek a hálózaton. Egy jelképes összegű munkadíjért cserébe ők nagyon szívesen beleírják a nyilvántartásba, hogy mi pénzt küldtünk valakinek, ezután pedig nyilvánosan is megosztják a hálózattal, hogy friss bejegyzést könyveltek el, mindenki mentse le magának a nyilvántartás legújabb változatát.

Ez a rendszer remekül működik, ám egy nap megjelennek a hatóságok, és körbeérdeklődnek, hogy ki működteti ezt az illegális pénzügyi rendszert? Ezután Charlotte és a többiek csuklójára bilincs kerül, az elosztott nyilvántartás pedig használhatatlanná válik. A nálunk lévő másolatok nem megbízhatók, nem bízhatunk meg egymásban sem, és nem tudjuk, hogy kinek a változatát kellene használnunk az újraindításhoz.

A teljes lekapcsolás helyett a kormány azt is megteheti, hogy börtönbüntetéssel fenyegeti meg a nyilvántartást vezetőket, ha rögzítik az Alice számára küldött tranzakciókat, hiszen róla feltételezhető, hogy drogokkal kereskedik. Mi történik viszont, ha megpróbálkozunk a demokráciával? Találjunk 50 őszinte résztvevőt, és minden nap szavazással döntjük el, hogy közülük ki könyvelheti az aznapi tranzakciókat. A hálózat minden résztvevője kaphat egy szavazatot. Ez is jól működhet, egészen addig, amíg fel nem tűnnek a színen olyanok, akik erőszakot, vagy pénzügyi ösztönzést használnak, hogy a már ismert végkimeneteleket idézzék elő:

  • Kényszeríteni próbálják a szavazókat, hogy az általuk kívánt jelöltre szavazzanak.
  • Ezután kényszerítik a megválasztottakat, hogy hamis bejegyzéseket írjanak bele a nyilvántartásba, vagy ne igazoljanak vissza bizonyos tranzakciókat.

Látható tehát, hogy komoly problémába ütköztünk. Bármikor, ha meghatározott résztvevőket választunk ki a nyilvántartás vezetésére, meg kell bíznunk abban, hogy őszinték, és becsületesen végzik a dolgukat. Emellett viszont semmilyen módunk sincsen arra, hogy megvédjük őket a zsarolástól, ha valaki tönkre akarná tenni a nyilvántartásunkat.

Hamis személyazonosságok

Eddig már két módszert is találtunk, amely nem tudja biztosítani a hitelességet: az egyik, hogy pontosan ismert résztvevőket bízunk meg a nyilvántartás vezetésével, a másik pedig a könyvelést végzők közötti körforgás alkalmazása. Mindkettő esetben amiatt bukik meg a rendszer, hogy a megbízhatóságot a résztvevők valódi személyazonosságához rendeljük hozzá. Pontosan tudnunk kell, hogy ténylegesen kik felelősek a nyilvántartás vezetéséért. Viszont minden esetben, ha személyazonossághoz kötjük a megbízhatóságot, felmerül az úgynevezett Sybil Attack jelensége, amely valójában csak egy divatos elnevezése a megszemélyesítésnek, a személyazonosság-lopásnak.

Volt már rá példa, hogy furcsa üzenetet kaptál valamelyik barátodtól, és később kiderült, hogy ellopták, vagy elvesztette a telefonját? Ha a történetben pénz is szerepel, millió vagy billió dollár akár, az emberek bármilyen erőszakot képesek jogosként megmagyarázni, csak ellophassák azt a telefont, és elküldhessék azt az üzenetet. Látható tehát, mennyire fontos a nyilvántartásunk kezelőit bármi áron megvédeni a kényszerítéstől. De hogyan tehetjük meg ezt?

Használjunk lottóhúzást!

Ha nem akarjuk lehetővé tenni, hogy erőszakkal vagy lefizetéssel kompromittálódhassanak a könyvelést végző résztvevők, egy olyan rendszer kell, amelyben túl sokan vannak, hogy zsarolni lehessen őket. Még jobb a helyzet, ha egyáltalán nem is ismerjük a valódi személyazonosságukat. Úgy kell intézni, hogy ténylegesen bárki csatlakozhasson a hálózathoz, részt vehessen a fenntartásában, de ehhez nincs szükségünk szavazásra, amely amúgy is manipulálható kényszerítéssel vagy szavazatvásárlással. Mi van akkor, ha egyfajta lottóhúzásként minden alkalommal, amikor új bejegyzést könyvelnénk a nyilvántartásunkba, véletlenszerűen választanánk ki valakit a résztvevők közül, hogy ezt megtegye? Nézzünk meg egy vázlatot erről, hogyan is nézne ki a gyakorlatban!

  • A világon bárki csatlakozhatna. Akár tízezrek is beszállhatnának a nagy nyilvántartás-lottóba.
  • Ha pénzt akarunk küldeni valakinek, ahogyan eddig is, most is elmondjuk a hálózat összes résztvevőjének ezt.
  • Ahelyett, hogy mindenki feljegyezné ezt a tranzakciót, sorshúzással döntjük el, hogy ki írhatja bele a nyilvántartásba.
  • Amikor megvan a nyertes, ő a mi tranzakciónk mellett az összes többi új tranzakciót is feljegyzi, amelyeket adott időszakban hallott.
  • Ha a nyertes érvényes tranzakciókat jegyez fel, olyanokat, amelyek megfelelnek a hálózat, a résztvevők által felállított szabályoknak, megkapja a jutalmat a munkájáért.
  • Mindenki frissíti a saját másolatát, beleírva a nyilvántartásba ugyanazt, amit a nyertes is beleírt a sajátjába.
  • Várunk egy kicsit, hogy mindenkinek legyen elegendő ideje frissíteni a saját nyilvántartását a legújabb tranzakciókkal, ezután pedig újból szervezünk egy lottóhúzást.

Ez a módszer már határozottan működőképesnek tűnik. Gyakorlatilag nem nagyon lehet kompromittálni a résztvevőket, hiszen egyrészt nem is tudjuk, hogy pontosan kik a résztvevők, másrészt nem lehet előre tudni, hogy ki fogja nyerni a sorsolást. Mindenesetre nem tudjuk, hogyan csináljuk ezt az egész lottóhúzás dolgot felsőbb irányítás nélkül, és nem tudjuk, hogy megbízhatunk-e abban, hogy a nyertes végül becsületesen viselkedik majd a nyilvántartás frissítésekor. A következő fejezet ennek a megoldásáról fog szólni.

1 thought on “A Bitcoin létrehozása – Byzantine Generals’ Problem

Comments are closed.