Eszmeiségek a bitcoin körül: Kriptoanarchia

2011-08-06

Sorozatunk harmadik része a már bemutatott anarchia egy modernebb, titkosításra és névtelenségre (a személyes adatok fokozott védelmére) épülő formája. Érdekessége, hogy az elmélete és gyakorlata jelenleg is formálódik, valamint hogy e frissen fordított írás eredetijére maga Satoshi Nakamoto, a Bitcoin rendszerének kidolgozója is hivatkozott a Bitcoin matematikai alapjait felvázoló írásában, jelentős mértékű ihletést merítve belőle.

Szerző: Wei Dai

Lenyűgözőnek találom Tim May kriptoanarchiáját. Az “anarchia” kifejezéssel hagyományosan összefüggésbe hozott közösségekkel ellentétben egy kriptoanarchiában az államot nem csak ideiglenesen semmisítik meg, hanem véglegesen betiltják és feleslegessé teszik. Egy ilyen közösségben nem lehet erőszakkal fenyegetőzni; maga az erőszak is ellehetetlenül, mivel a résztvevőit nem lehet valós nevekhez vagy fizikai helyszínekhez kötni.

Egyelőre elméletben sem világos, hogyan is működhetne egy ilyen közösség. Elvégre bármely közösséget a tagjainak az együttműködése határoz meg. Az együttműködés pedig csak akkor lehet hatékony, ha rendelkezésre áll hozzá egy csereeszköz (pénz), valamint valamilyen eszköz a szerződések betartatására. Hagyományosan ezeket a szolgáltatásokat az állam vagy államilag támogatott intézmények biztosították, csak és kizárólag jogszerű entitások jogszerű ügyleteihez. Jelen cikkben egy olyan protokollt vázolok fel, melynek segítségével e szolgáltatások lenyomozhatatlan entitások által és számára is biztosíthatóak.

Valójában két protokollt fogok bemuttni, azonban az első nem túl praktikus, mivel szinkronizált, megzavarhatatlan és névtelen adásokkal intéz mindent – ezzel azonban a második, jóval praktikusabb protokoll kialakítására ösztönöz.

Mindkét esetben abból az előfeltevésből indulok ki, hogy rendelkezésre áll egy lenyomozhatatlan hálózat, melyben az adókat és a vevőket kizárólag digitális álnevek (értsd: nyilvános kulcsok) azonosítják, a küldő pedig minden egyes üzenetet aláír és kifejezetten a fogadó részére kódol.

Az első protokollban minden egyes résztvevő (saját) adatbázist vezet arról, hogy melyik álnévhez mennyi pénz tartozik. Ezek az egyenlegek együttesen határozzák meg a pénz hovatartozását, jelen protokoll témája pedig ezen egyenlegek konkrét kezelési módja.

1. A pénz létrehozása. Egy addig még meg nem oldott matematikai feladat megoldásával bárki hozhat létre pénzt. Ennek feltétele csupán annyi, hogy egyrészt könnyen meg lehessen állapítani a probléma megoldásához felhasznált számítási erőforrások mennyiségét, másrészt pedig hogy a megoldásnak semmilyen egyéb – sem gyakorlati, sem szellemi – értéke ne legyen. Az így létrehozott pénz mennyiségének a probléma megoldásához felhasznált számítási kapacitásnak az éppen aktuális piaci viszonyoknak megfelelő költségével egyenértékűnek kell lennie. Így például ha a probléma megoldása 100 órát vesz igénybe egy olyan számítógépen, ami a lehető leggazdaságosabban végzi el ezt a feladatot, és ha ezen a gépen ennyi számítási idő 3 szabványos piaci kosár ellenében vásárolható meg, akkor a szóban forgó probléma megoldásának szétküldésekor mindenkinek 3 pénzegységet kell jóváírnia a megoldó egyenlegén.

2. A pénz átutalása. Ha Alice (a K_A álnév tulajdonosa) x egységnyi pénzt kíván átutalni Bobnak (a K_B álnév tulajdonosának), akkor szétküld egy olyan üzenetet K_A aláírással, hogy “K_B-nek adok X egységnyi pénzt”. Ezen üzenet fogadásakor előbb mindenki megterheli K_A egyenlegét X egységgel, majd ugyanennyit ír jóvá K_B-én. Kivételt csak az az eset jelent, ha a terhelés nyomán K_A egyenlege negatívba futna; ilyenkor ugyanis a hálózat egyszerűen figyelmen kívül hagyja az utalási üzenetet.

3. A szerződések érvényesítése. Egy érvényes szerződésnek tartalmaznia kell egy maximális kötbért arra az esetre, ha bármelyik fél is mulasztást követne el, valamint egy harmadik, a vitás kérdéseket eldöntő bíró szerepét betöltő felet. Bármely szerződés csak akkor lép hatályba, ha az abban résztvevő felek mindegyike – a döntőbíró is – aláírta azt a hálózat nyilvánossága előtt. Az aláírt szerződés szétküldésekor minden résztvevő megterheli az egyenlegét a számára kiszabott mértékű kacióval, és egy különleges, a szerződés biztonságos hashével azonosított, az összes résztvevő fél kötbérjét egybegyűjtő számlán írja jóvá azt. A szerződés akkor válik hatályossá, ha minden résztvevő fél sikeresen végrehajtota ezt az utalást anélkül, hogy mínuszba futott volna az egyenlege. Ellenkező esetben a szerződés szanálásra kerül, a kötbérszámlára utalt összegek pedig vissza az eredeti tulajdonosukhoz. Egy szerződés például valahogy így nézhet ki:

K_A vállalja, hogy 0:0:0 1/1/2000 előtt elküldi P probléma megoldását K_B-nek, aki maga pedig azt vállalja, hogy ezért cserébe 100 PE-t (pénzegységet) küld K_A-nak 0:0:0 1/1/2000 előtt. K_C vállalja, hogy vita esetén döntőbíráskodik kettejük között. Mulasztás esetén K_A legfeljebb 1.000 PE-t hajlandó fizetni, K_B 200-at, K_C pedig 500-at.

4. A szerződések teljesítése. Ha a szerződés vita nélkül teljesült, úgy erről mindenki szétküld a hálózatba egy ilyesféle, aláírt üzenetet: “A H SHA-1 hashű szerződés rendben teljesítésre került” – vagy épp: “A H SHA-1 hashű szerződés a következő mértékű kötbére(k) behajtásával, mulasztással teljesült.” Miután valamennyi aláírás elküldésre került, minden résztvevő jóváírja a többiek egyenlegén a számára megállapított kötbér összegét, felbontja a szerződés egyenlegét, majd, amennyiben ez szükséges, jóváírja vagy ráterheli minden érintett egyenlegén/-re a számára megállapított kötbér-összeget.

5. A szerződések betartatása. Amennyiben a szerződő felek még a döntőbíró közbenjárásával sem tudnak megállapodni a teljesítés megfelelő módjáról, úgy minden érintett közzétesz egy általa javasolt kötbér-tervezetet az amellett szóló érveivel, indokaival és/vagy bizonyítékaival együtt. Az érintettek eztán megállapítják a kötbér(ek) tényleges összegét, majd ennek megfelelően módosítják az egyenlegeiket.

A második protokollban nem vezet mindenki nyilvántartást a pénzegységek hovatartozásáról, csak a résztvevők egy bizonyos hányada (a továbbiakban: szerverek). Ezeket a szervereket egy usenet-jellegű csatorna köti össze egymással. Az ezen a csatornán közvetített tranzkciós üzenetek itt is ugyanolyanok, mint az első protokollnál, de az egyes tranzakciókban érintett feleknek ellenőrizniük kell, hogy az üzenetet megkapta és feldolgozta-e a szerverek egy véletlenszerűen kiválasztott hányada.

Mivel ebben az esetben mindegyik szerverben meg kell bízni valamennyire, ezért szükség lesz egy megfelelő rendszerre is a tisztességességük biztosítása érdekében. Ennek jegyében minden szervernek el kell helyeznie egy bizonyos mennyiségű pénzt egy különleges számlán az esetleges jutalmak vagy büntetések fedezésére (jutalom az esetleges csalások és visszaélések leleplezéséért jár). Emellett időről időre minden egyes szervernek közzé kell tennie és felelősséget kell vállalnia a pénzelőállítási és -hovatartozási adatbázisait/-ért. Ezzel együtt minden résztvevőnek ellenőriznie kell a saját egyenlege helyességét, valamint azt is, hogy az egyes felhasználók egyenlegeinek összesített értéke nem haladja-e meg a rendszerben összesen rendelkezére álló pénz mennyiségét. Így még akkor is meggátolható a pénzkészlet illetéktelen kibővítése, ha az összes szerver össze is játszik ennek érdekében. A menet közben, újonnan csatlakozó szerverek szintén a nyilvánosságra hozott adatbázisok alapján hozhatják szinkronba magukat a már meglévő és működő szerverekkel.

A jelen cikkben felvázolt protokoll egy csereeszköz és egy szerződésbetartatási eljárás útján teszi lehetővé lenyomozhatatlan álneveket használó entitások hatékonyabb együttműködését. Valószínűleg lehetne ezt a protokollt még hatékonyabbá és biztonságosabbá is tenni, de bízom benne, hogy már az itt felvázolt kiindulási formával is tehettünk egy lépést a kriptoanrchia elméleti és gyakorlati megvalósítása felé.

——-

A) függelék: egy alternatív b-pénz-előállítási eljárás

A b-pénzprotokoll egyik sarkalatos pontja a pénz előállítása. Ehhez ugyanis az szükséges, hogy minden számlavezető megegyezésre jusson az egyes elvégzendő számítások költségeiről. Mivel azonban a számítástechnika túlságosan is gyorsan – és nem is mindig nyilvánosan – fejlődik, ezért az erre vonatkozó információk hiányosak, hozzáférhetetlenek, pontatlanok vagy elavultak lehetnek, ami pedig súlyos gondokat okozhat a ptotokoll megvalósításánál.

Ezért javaslom a következő alternatív pénzelőállítási alprotokollt, melynél a számlavezetők (az első protokoll esetében mindenki, míg a másodiknál a szerverek) a költségek helyett az adott időköz alatt előállítandó b-pénz mennyiségéről egyeznek meg, az előállítás költsége pedig aukció útján kerül meghatározásra. Minden pénzelőállítási időköz a következő négy fázisra osztható:

1. Tervezés. A számlavezetők közösen kiszámítják és megállapítják a soron következő időszakban létrehozandó pénzmennyiség optimális értékét. Függetlenül attól, hogy megegyezésre jutnak-e, mindannyian közzéteszik a saját kóvátjukat és az annak alátámasztására esetlegesen elvégzett makroökonómiai számításokat.

2. Aukció. Mindenki, aki szeretne b-pénzt előállítani, <x, y> formátumban tesz erre egy ajánlatot, ahol x az általa előállítani kívánt pénz mennyisége, y pedig egy még megoldatlan probléma egy előre meghatározott problémaosztályból. Az egyes osztályokba sorolt problémák névleges (például MIPS-években mért) árát érdemes közmegyezés útján meghatározni.

3. Számítás. Az ajánlatok beérkezését követően az ajánlattevők nekiláthatnak az ajánlatukban szereplő problémák megoldásának, majd ha sikerrel jártak, közzétehetik az eredményeiket.

4. Pénzelőállítás. A számlavezetők mindig a létrehozott b-pénzenkénti legmagasabb névleges költséggel járó ajánlatokat fogadják el (a megoldásaikat ténylegesen bemutatókéi közül), és ennek megfelelő összeget is írnak jóvá az ajánlattevők számláján.

Forrás: WeiDai.Com

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.