Vous êtes sur la page 1sur 10

A Bitcoin matematikai alapjai

Bitcoin:
A P2P-alapú elektronikus pénz rendszere

Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org

Kivonat. Egy tisztán P2P-alapú elektronikus pénzrendszerrel az érintett felek közvetítő


pénzintézetek nélkül, közvetlenül egymás között bonyolíthatnák le az online fizetéseket. A
megoldás részét képezik a digitális aláírások is, de teljes csak akkor lehet a rendszer, ha meg tudja
akadályozni egyazon összegek többszöri elköltését. A felvázolt P2P-rendszer pontosan erre a
problémára nyújt megoldást. A hálózat a tranzakciók hashelésével és egybefüggő, hash-alapú
munkabizonyíték-láncba fonásával időbélyegzi a tranzakciókat. A tranzakció-bejegyzések ily
módon létrehozott láncolatát így utólag már nem lehet megváltoztatni a munkabizonyítékok
újraszámítása nélkül. A leghosszabb lánc nem csak a benne foglalt események valódiságát és
rögzített sorrendiségét tanúsítja, hanem egyben azt is, hogy a hálózat legnagyobb számítókapacitás-
tömörülése hozta létre. Mindaddig, amíg a hálózat számítókapacitásának többsége nem áll egy
esetleges támadó szervezett irányítása alatt, a szabad csomópontok által vezetett és bővített lánc
mindig hosszabb lesz és gyorsabban is fog bővülni, mint a támadóé. Maga a hálózat minimális
szervezést igényel. Az üzenetek best effort-alapon kerülnek továbbításra, a csomópontok pedig
tetszés szerint hagyhatják el a hálózatot vagy térhetnek vissza, elfogadva a leghosszabb
munkabizonyíték-láncot a távollétük alatt lezajlott események bizonyítékaként.

1. Bevezető

Az internetes kereskedelem mára szinte teljes egészében az elektronikus fizetéseket bizalmas


harmadik félként kezelő pénzintézetek szolgáltatásai köré fonódott. És bár ez a rendszer a legtöbb
tranzakció esetében valóban elég jól működik, a bizalom-alapú modell természetéből fakadó
gyengéin nem tud felülkerekedni. Nem igazán lehetségesek például 100%-ban visszafordíthatatlan
tranzakciók, mivel a pénzintézetek nem kerülhetik el az utalásokkal és a pénz kezelésével
kapcsolatos vitákat. Közvetítői költségek rakódnak a tranzakciókra, kialakítva így a még
praktikusnak mondható tranzakciók minimális alsó értékhatárát és ellehetetlenítve az alkalmi, kis
összegű tranzakciókat. Veszteségként könyvelhetjük el továbbá a vissza nem fordítható
szolgáltatásokért adható vissza nem fordítható fizetés lehetőségének hiányát is. A
visszafordíthatóság lehetősége csak fokozza a bizalom iránti igényt; a kereskedőket gyanakvásra
készteti a vásárlókkal szemben, valamint tőlük a feltétlenül szükségesnél több adat és információ
kicsikarására. És még így is bele kell törődnünk egy bizonyos százaléknyi elkerülhetetlen csalási
arányba. Élőben, készpénz használatával elkerülhetőek ugyan ezek a költségek és fizetési
bizonytalanságok, de egy kommunikációs csatornán keresztüli fizetés lebonyolítására nincs mód
bizalmas harmadik fél nélkül.

Ezért van szükség tehát egy olyan elektronikus fizetőrendszerre, ami nem bizalomra, hanem
kriptográfiai bizonyítékokra épül; melynek segítségével a felek anélkül bonyolíthatják le
közvetlenül egymás között a fizetéseiket, hogy ehhez egy bizalmas harmadik fél szolgáltatásait
kellene igénybe venniük. Az olyan tranzakciók, melyeknek a visszafordítása aránytalanul nagy
számítókapacitást igényelne, az eladókat is védik a csalóktól, rutinszerű zálogmechanizmusok
beépítésével pedig a vásárlók is könnyen védhetőek. Jelen dolgozatban egy P2P-alapú, elosztott
időbélyegző szerverre épülő megoldást kínálunk a többszöri elköltés problémájára. Ez a szerver
számítási bizonyítékok generálásával tanúsíthatja a tranzakciók időbeli sorrendjét. A rendszer
mindaddig teljesen biztonságos, amíg abban a tisztességes csomópontok összesen nagyobb

1
számítókapacitást képviselnek, mint bármely támadó saját irányítása alá vont, összehangoltan
dolgozó csomópontjai.

2. Tranzakciók

Egy elektronikus érmét digitális aláírások láncolataként határozunk meg. Ezt az érmét a tulajdonosa
úgy adhatja át valaki másnak, ha digitálisan aláírja egyrészt az előző tranzakció hashét (melynek
révén az érme hozzá került), másrészt pedig a fogadó fél nyilvános kulcsát, és ezeket hozzáilleszti
az érme végéhez. Így az érmét fogadó fél az aláírások ellenőrzésével ellenőrizheti az érme egymást
követő tulajdonosainak láncolatát is.

Így azonban azt még nem tudja ellenőrizni az érmét fogadó fél, hogy a korábbi tulajdonosok egyike
nem költötte-e el többször is a kérdéses érmét. Erre a problémára a bizalmas központi hatóság, avagy
egy pénzverde bevezetése a leggyakoribb válasz, amely többszöri elköltések után kutatva ellenőriz
minden egyes tranzakciót. Ez esetben minden tranzakció után vissza kell adni minden egyes érmét
a pénzverdének, amely aztán újakat bocsát ki helyettük – így tehát csakis a közvetlenül a
pénzverdéből érkező érmék esetében lehet biztos benne az ember, hogy azok nem lettek többször
elköltve. Ezzel a megoldással csak az a baj, hogy a teljes pénzrendszer sorsa a pénzverdét üzemeltető
vállalaton áll vagy bukik, mivel minden egyes tranzakciónak éppúgy keresztül kell mennie rajtuk,
ahogyan a bankok esetében is.

Olyan megoldásra van tehát szükség, melynek segítségével az érmét fogadó fél megbizonyosodhat
afelől, hogy a korábbi tulajdonsok nem írtak-e alá korábbi tranzakciókat. Esetünkben mindig csak
az első – a legkorábbi – tranzakció számít, így a többszöri elköltésre irányuló későbbi próbálkozások
már nem lényegesek. A korábbi tranzakciók hiánya felől pedig csak úgy bizonyosodhatunk meg, ha
látjuk az összes tranzakciót. A pénzverde-alapú modellben egyedül a pénzverde látta át az összes
tranzakciót, és így értelemszerűen az is döntötte el, hogy melyik érkezett be elsőként. Ahhoz, hogy
bizalmas harmadik fél nélkül is elvégezhessük ugyanezt az ellenőrzést, egyrészt minden tranzakciót
nyilvánosan be kell jelenteni [1], másrészt pedig ki kell alakítani egy olyan rendszert, melynek
keretein belül a résztvevők közmegegyezésre juthatnak az egymást követő tranzakciók lezajlásának
egyetlen, valós sorrendjéről. Bármely adott tranzakció esetében szükség van egy, a fogadó fél
számára is elfogadható bizonyítékra arról, hogy a tranzakció elindításának időpontjában a
csomópontok többségének közmegegyezése szerint is valóban az volt az első.

2
3. Időbélyegző szerver

Ajánlott megoldásunk egy időbélyegző szerverrel kezdődik. Az időbélyegző szerver lényege abban
áll, hogy széles körben nyilvánosságra hozza egy sor tételt magában foglaló blokk hashét, hasonlóan
például egy újságban való leközléshez vagy egy Usenet poszthoz [2-5]. Az időbélyeg bizonyítja,
hogy a kérdéses adatnak ekkor már – értelemszerűen – léteznie kellett ahhoz, hogy bekerülhessen a
hashbe. Mindegyik időbélyeg hashe magában foglalja az előző időbélyeget is, hosszú láncot alkotva
így, melynek minden újabb időbélyege megerősíti az előtte felhalmozódottakat.

4. Munkabizonyíték

Egy elosztott, P2P-alapú időbélyegző szerver kialakításához újság vagy Usenet-posztok helyett egy,
Adam Back Hashcash-éhez [6] hasonló munkabizonyíték-rendszerre lesz szükségünk. Ennek
lényege egy olyan érték előkeresése, amelynek a (például SHA-256-tal) előállított hashe egy
bizonyos számú nullás bittel kezdődik. Az ehhez szükséges munkavégzés átlagos mennyisége a
szükséges nullás bitek számával arányosan, exponenciálisan növelhető. A munka eredménye pedig
egyetlen szimpla hashseléssel ellenőrizhető.

Az időbélyegző hálózatunkat tehát kiegészítjük egy olyan munkabizonyító rendszerrel, mely egy
ún. nonce-értéket helyez el az egyes blokkokban. Ez az érték addig növelhető, amíg el nem ér egy
olyan szintet, amelynek eredményeképp a blokk hashe a kívánt mennyiségű nullával kezdődhet. Ha
ez a munkabizonyító számítási feladat egyszer már kielégítően elvégeztetett, akkor az így elkészült
blokkot utólag nem lehet megváltoztatni anélkül, hogy az egész munkát újra meg ne kellene
ismételni rajta. Ahogyan pedig egyre újabb blokkok kapcsolódnak mögé, úgy gyarapodik a
szükséges munkamennyiség is, mivel egy adott blokk utólagos módosításához az utána
következőket is mind újra kellene számítani.

A munkabizonyíték egyben megoldja a többségi döntéshozatalban való képviselet


meghatározásának problémáját is. Ha egy-IP-cím-egy-szavazat-alapon határzonánk meg a
többséget, akkor azon könnyen felülkerekedhetne bárki, aki elég sok IP-címet tud kiosztani. A
munkabizonyíték azonban egy-számítókapacitás-egy-szavazat-alapú. A többségi döntéshozatalt a
legnagyobb munkabizonyíték-erőfeszítést magában foglaló leghosszabb lánc képviseli. Ha a hálózat
számítókapacitásának többségét tisztességes csomópontok adják, akkor a tisztességes lánc is fog a
leggyorsabban bővülni, lehagyva minden más, vele esetlegesen versengő láncot. Egy korábbi blokk
módosításához bármely támadónak nem csak hogy újra el kellene végeznie annak és az az után
következő összes többi blokknak a munkabizonyíték-feladatát is, de ezután még fel is kellene
zárkóznia a tisztességes csomópontokhoz, majd pedig le is kellene hagynia azokat. A későbbiekben

3
azt is megmutatjuk, hogy egy lassabb támadó felzárkózásának esélye a lánchoz kapcsolt minden
egyes újabb blokkal exponenciálisan csökken.

A gyorsuló hardverek és a csomópontok működtetése iránti érdeklődés időbeli változékonyságának


kompenzálása érdekében a munkabizonyíték nehézségét egy mozgó átlaggal határozzuk meg úgy,
hogy mindig biztosíthassuk az átlagos óránkénti blokkmennyiség állandóságát. Ha túl gyorsan
generálódik túl sok blokk, akkor ezzel arányosan emelkedik a nehézség is.

5. Hálózat

A hálózat üzemeltetésének lépései sorban a következők:

1) Az új tranzakciókat bejelentik az összes csomópontnak.


2) Minden csomópont blokkba gyűjti az új tranzakciókat.
3) Mindegyik csomópont nekilát a blokkjához tartozó, adott nehézségű munkabizonyíték
előkereséséhez.
4) Amint egy csomópont megtalál egy munkabizonyítékot, azonnal szétküldi a blokkját az összes
többinek.
5) Azok az új blokkot csak akkor fogadják el, ha az abban foglalt valamennyi tranzakció érvényes,
és nem tartalmaz többszöri elköltéseket.
6) A blokk elfogadását a csomópontok azzal jelzik, hogy átveszik az elfogadott blokk hashét, és
azzal – mint előző hashsel – kezdenek dolgozni a lánc következő blokkján.

A csomópontok mindig a leghosszabb láncot fogadják el helyesnek, és azt bővítik tovább. Ha két
csomópont egyidőben küldi szét a következő blokk két különböző verzióját, úgy egyesekhez
értelemszerűen az egyik, másokhoz pedig a másik jut el előbb. Ebben az esetben mindegyik az
elsőként beérkezettel dolgozik tovább, de az előző láncot is elmentik arra az esetre, ha az hosszabbra
nőne. Ez a patthelyzet akkor törik meg, ha az egyik ágat egy újabb munkabizonyíték hosszabbra
nyújtja a másiknál; ekkor az addig a másikon dolgozó csomópontok is átváltanak a hosszabb ágra,
és azon dolgoznak tovább.

Nem kell feltétlenül eljutnia minden egyes újabb tranzakciónak minden csomóponthoz. Ha elég sok
csomóponthoz jut el, akkor úgyis hamar bekerül egy blokkba. A blokk-küldés ezzel együtt toleráns
is; ha egy csomópont nem kap meg egy blokkot, akkor a következő blokk fogadásakor észre fogja
venni, hogy egyet kihagyott, és lekéri a hiányzót is.

6. Ösztönzés

Az új blokkok első tranzakciója megegyezés szerint egy speciális tranzakció, ami egy új érmét hoz
a hálózatba, a blokk megalkotójának tulajdonaként. Ez szolgáltatja az ösztönzést a hálózatot
fenntartó csomópontok működtetéséhez – egyrészt, másrészt pedig központi kibocsátó hatóság híján
ez gondoskodik az új érmék forgalomba hozataláról is. Ez a folyamat párhuzamba állítható az
aranyásók munkájával, akik saját erőforrásaik befektetésével dolgoznak új aranyrögök forgalomba
hozatalán. Esetünkben a felhasznált elektromosság és számítókapacitás a befektetett erőforrás.

Ösztönzést jelentenek továbbá a tranzakciós díjak is. Ha egy tranzakció kimeneti értéke alacsonyabb
a bemeneti értékénél, akkor a kettő közti különbség tranzakciós díjként hozzáadódik a tranzakciót
tartalmazó blokk ösztönző értékéhez. Amikor már forgalomba került egy bizonyos, előre
meghatározott mennyiségű érme, a tranzakciós díjak egyedüli és kizárólagos ösztönző erővé
válhatnak, a rendszer pedig tökéletesen inflációmentessé.

Ez egyben őszinteségre is ösztönzi a csomópontokat. Ha egy kapzsi támadó valahogyan több


számítókapacitást gyűjtene össze, mint amennyit az összes többi tisztességes csomópont együtt
4
kitesz, akkor választania kell a már kifizetett pénze visszaszerzése vagy az új érmék generálása
között. Még ez esetben is nyereségesebbnek bizonyulhat számára a szabályok – a mindenki másnál
több új érme tulajdonosát előnyben részesítő szabályok – betartása, mint a saját gazdagsága
alapjainak aláásása.

7. Tárhely-takarékosság

Ha egy érme legutóbbi tranzakcióját már elég sok újabb blokk temette maga alá, akkor az azt
megelőző tranzakciói törölhetőek tárhely-takarékosság címén. Ahhoz, hogy ezt a blokk hashének
megtörése nélkül kivitelezhessük, a tranzakciókat Merkle-fába [7][2][5] hasheljük, melynek csak a
gyökerét hagyjuk benne a blokk hashében. A régi blokkok így tömöríthetőek a fa ágainak
csonkolásával. A közbenső hasheket nem kell tovább tárolni.

Egy egyetlen tranzakciót sem tartalmazó blokk fejléc megközelítőleg 80 byte méretű lenne. 10
percenként egy újabb blokkal számolva 80 * 6 * 24 * 365 = 4,2 MB/év. Tekintve, hogy 2008-ban
egy átlagos új számítógépet 2 GB RAMmal árulnak, Moore törvénye pedig 1,2 GB-os éves
növekedést vetít előre, ezen adatok rögzítése még akkor sem okozhat gondot, ha a blokk fejléceket
a memóriában is kell tárolni.

8. Egyszerűsített fizetésellenőrzés

A fizetések komplett hálózati csomópont üzemeltetése nélkül is ellenőrizhetőek. A felhasználónak


ehhez csak a leghosszabb munkabizonyíték-lánc blokk fejléceinek egy példányára van szüksége,
amihez pedig könnyen hozzájuthat a hálózati csomópontoktól. Amint megbizonyosodott róla, hogy
valóban a leghosszabb láncot szerezte meg, megkaphatja a kérdéses tranzakciót az időbélyegzett
blokkjához kapcsoló Merkle-ágat is. Magát a tranzakciót nem ellenőrizheti ugyan, de az ágnak a
lánc megfelelő helyére való illesztésével arról így is megbizonyosodhat, hogy azt valóban elfogadta
egy hálózati csomópontot, és hogy az utána következő újabb blokkok is megerősítik, hogy az egész
hálózat is elfogadta.

5
Az ellenőrzés így mindaddig megbízható, amíg a hálózatot a tisztességes csomópontok uralják –
sebezhetővé csak akkor válik, ha egy támadó legyőzi a hálózatot. Mert bár a csomópontok maguk
is ellenőrizhetik a tranzakciókat, az egyszerűsített módszert alkalmazó felhasználókat a támadó
mindaddig átverheti a hamis tranzakcióival, amíg fenn tudja tartani az uralmát a hálózat felett. Ezt
például úgy lehetne kivédeni, ha a csomópontok riadóztatnák a hálózatot, ha érvénytelen blokkot
észlelnek, felkérve a felhasználó kliensét a teljes blokk és a gyanús tranzakciók letöltésére a
rendellenesség megerősítése érdekében. Persze a fizetéseket gyakran fogadó üzletek nagy
valószínűséggel még így is szeretnének majd saját csomópontot működtetni a biztonságuk
függetlenítése és a minél gyorsabb ellenőrzés érdekében.

9. Osztás és egyesítés

Lehetne ugyan egyedileg is kezelni az egyes érméket, de felettébb célszerűtlen lenne minden egyes
utalás minden egyes centjét külön tranzakcióként jegyezni. Ezért, az oszthatóság és egyesíthetőség
érdekében az egyes tranzakcióknak több bemenetük és több kimenetük is lehet. Rendes
körülmények között vagy csak egy nagyobb, előző tranzakcióból származó, vagy pedig több, kisebb
utalások összegeit egyesítő bemenet lesz, kimenetből pedig legfeljebb kettő: maga a kifizetett
összeg és az esetleges visszajáró a feladónak.

Megjegyzendő, hogy ez a sokszoros elágazás (vagyis hogy egy tranzakció több másikon alapul, és
azok is még több másikon, stb.) itt nem jelent problémát, mivel soha nincs szükség egy bizonyos
tranzakció összetevői előéletének teljes és részletekbe menő feltárására.

10. Adatvédelem

6
A hagyományos banki modell valamennyire biztosítja az adatok védelmét azáltal, hogy korlátozza
az azokhoz való hozzáférést úgy a tranzakció résztvevői, mint a bizalmas harmadik fél számára is.
A tranzakciók nyilvános bejelentésének szükségessége ezt nem teszi lehetővé – azonban az adatok
kiszivárgását másképp is megakadályozhatjuk, jelesül a nyilvános kulcsok névtelenségének
megőrzésével. Azt bárki láthatja, hogy valaki épp küldött egy bizonyos összeget valaki másnak, de
konkrét személyekhez ezt már nem tudja kötni. Ez a tőzsdék adatkezelésével állítható párhuzamba,
ahol szintén nyilvánosságra hozzák az egyes adásvételek időpontját és volumenét (a “szalagot”), de
azt már nem, hogy melyikben kik voltak érintettek.

Másodlagos tűzfalként érdemes minden tranzakcióhoz új kulcspárt használni, hogy semmiképp se


köthesse össze őket senki illetéktelen valós személyekkel. Valamennyi kockázat azonban így is
marad a több-bemenetes tranzakciók esetében, mivel ezek szükségszerűen felfedik, hogy a
bemeneteik egyazon tulajdonostól származnak. Ha pedig ismertté válik egy kulcs tulajdonosa, akkor
azon keresztül az érintett tulajdonos más tranzakcióihoz is el lehet jutni.

11. Számítások

Vegyük most fontolóra azt az esetet, amikor egy támadó megpróbál gyorsabban generálni egy saját
láncot, mint ahogyan a tisztességes csomópontok bővítik az eredetit. Még ha sikerrel is járna, a
rendszer akkor sem nyílna meg az önkényes változtatások – így például a semmiből teremtett vagy
a támadóhoz soha nem tartozott pénz elvétele – előtt, mivel a csomópontok nem fogadnak el sem
érvénytelen tranzakciót fizetségképp, sem pedig ilyeneket tartalmazó blokkokat egyáltalán. A
támadó csak a saját korábbi tranzakcióinak megváltoztatásával próbálhatja meg visszaszerezni az
egyszer már kiadott pénzét.

A tisztességes és a támadó lánc versengését binomiális véletlen sétaként jellemezhetjük. Siker-


esemény az, ha a tisztességes lánc bővül egy újabb blokkal (+1 előny), kudarc-esemény pedig az,
ha a támadó lánc bővül egy újabb blokkal (-1 előny).

Annak az esélye, hogy egy támadó lánc behozzon egy adott mértékű lemaradást, a játékos csődjének
problémájával állítható párhuzamba – amikor is feltesszük, hogy egy korlátlan hitelkerettel
rendelkező szerencsejátékos mínuszból indulva, potenciálisan végtelen számú játszmával próbálja
nullszaldóra feltornászni az egyenlegét. Annak a valószínűségét, hogy elérheti-e valaha is a
nullszaldót – vagy hogy egy támadó valaha is felzárkózhat-e a tisztességes lánchoz -, a
következőképpen számíthatjuk ki [8]:

p = annak a valószínűsége, hogy egy tisztességes csomópont találja meg a következő blokkot
q = annak a valószínűsége, hogy a támadó találja meg a következő blokkot
qz = annak a valószínűsége, hogy a támadó valaha is felzárkózhat z blokk hátrányból

7
Kiindulva azon előfeltevésünkből, miszerint p > q, a felzárkózás esélyét exponenciálisan csökkenti
minden egyes újabb, a támadó lemaradását növelő blokk. 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.

Lássuk, mennyi időnek kell eltelnie ahhoz, hogy egy tranzakció fogadója kellőképpen
megbizonyosodhasson arról, hogy a feladó már nem fordíthatja vissza a tranzakciót. Jelen esetben
feltételezzük, hogy a feladó egy támadó, aki egy ideig el akarja hitetni a fogadóval, hogy valóban
fizetett neki, majd visszafordítaná az utalást, hogy visszaszerezze a pénzét. Ez esetben a fogadó fél
riasztva lesz ugyan, de a támadó bízik benne, hogy akkor már késő lesz.

A fogadó tehát generál egy új kulcspárt, és csak az aláírás előtt nem sokkal adja meg a nyilvános
kulcsot a feladónak, elejét véve így annak, hogy az – bízva a szerencséjében – már előre elkezdhesse
a blokkgyártást, és épp a megfelelő pillanatban hajthassa végre a tranzakciót. Amint a tranzakció
elküldésre került, a csaló titokban nekilát a saját, párhuzamos blokklánca bővítésének, amelyben
már módosította ezt a legutóbbi tranzakcióját.

A fogadó addig vár, amíg a tranzakció bekerül egy blokkba, és még z újabb blokkot is fűz fel
utána a láncra a hálózat. Nem tudja ugyan, hogy a támadó ez idő alatt mennyit haladt, de
feltételezve, hogy a tisztességes blokkok az elvárt átlagos ütemben bővülnek, a támadó potenciális
haladását elvárt értékes Poisson-eloszlással számolhatjuk ki:

Annak valószínűségét, hogy a támadó innen még felzárkózhat-e, úgy kaphatjuk meg, ha
megszorozzuk a lehetséges haladását az adott ponttól való felzárkózásának valószínűségével:

8
Az eloszlás végtelen farkának összegzését elkerülendően átrendezve:

C kóddá konvertálva…

#include double AttackerSuccessProbability(double q, int z)


{
double p = 1.0 – q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k {
double poisson = exp(-lambda);
for (i = 1; i poisson *= lambda / i;
sum -= poisson * (1 – pow(q / p, z – k));
}
return sum;
}

Ezt különböző értékekkel lefuttatva láthatjuk, hogy z növekedésével exponenciálisan csökken a


felzárkózás valószínűsége.

q=0.1
z=0 P=1.0000000
z=1 P=0.2045873
z=2 P=0.0509779
z=3 P=0.0131722
z=4 P=0.0034552
z=5 P=0.0009137
z=6 P=0.0002428
z=7 P=0.0000647
z=8 P=0.0000173
z=9 P=0.0000046
z=10 P=0.0000012

q=0.3
z=0 P=1.0000000
z=5 P=0.1773523
z=10 P=0.0416605
z=15 P=0.0101008
z=20 P=0.0024804
z=25 P=0.0006132
z=30 P=0.0001522
z=35 P=0.0000379
z=40 P=0.0000095

9
z=45 P=0.0000024
z=50 P=0.0000006

Megoldás 0,1%-nál alacsonyabb P-vel…

P < 0.001
q=0.10 z=5
q=0.15 z=8
q=0.20 z=11
q=0.25 z=15
q=0.30 z=24
q=0.35 z=41
q=0.40 z=89
q=0.45 z=340

12. Összefoglalás

Egy olyan elektronikus tranzakció-kezelő rendszert vázoltunk fel, melyhez nincs szükség
bizalomra. Digitális aláírásokból összeállított érmék szokványos keretrendszeréből indultunk ki,
melyek garantálják ugyan a tulajdonlás biztonságát, ám önmagukban nem elégségesek egy, a
többszörös elköltést megakadályozó rendszer nélkül. Ezért vázoltunk fel egy, a tranzakciók
nyilvános történetét munkabizonyítékkal feljegyző P2P-hálózatot, melynek mindaddig nem
célszerű a megtámadása, amíg tisztességes csomópontok adják az összesített számítókapacitás
többségét. A hálózat erős a maga strukturálatlan egyszerűségében. A csomópontok egyszerre,
minimális koordinációval dolgoznak. Nem kell azonosítani őket, mivel az üzeneteknek nincs
konkrét címzettjük, és elég csak a lehető legtöbb helyre eljutniuk. A csomópontok tetszés szerint
hagyhatják el a hálózatot és térhetnek vissza, elfogadva a munkabizonyíték-láncolatot a
távollétükben történt események tanúságaként. A számítókapacitásukkal szavaznak, tovább-
bővítéssel fogadva el az érvényes blokkokat és tovább nem bővítéssel utasítva el az
érvényteleneket. Ezzel a közmegegyezéses rendszerrel minden szükséges szabály és ösztönzés
bevezethető és életbe léptethető.

Hivatkozások

[1] W. Dai, “b-money,” http://www.weidai.com/bmoney.txt, 1998.


[2] H. Massias, X.S. Avila és J.-J. Quisquater, “Design of a secure timestamping service with
minimal trust requirements”, 20th Symposium on Information Theory in the Benelux, 1999. május.
[3] S. Haber, W.S. Stornetta, “How to time-stamp a digital document”, Journal of Cryptology, 3.
kötet, 2. szám, 99-111. old., 1991.
[4] D. Bayer, S. Haber, W.S. Stornetta, “Improving the efficiency and reliability of digital time-
stamping”, Sequences II: Methods in Communication, Security and Computer Science, 329-334.
old., 1993.
[5] S. Haber, W.S. Stornetta, “Secure names for bit-strings”, Proceedings of the 4th ACM
Conference on Computer and Communications Security, 28-35. old., 1997. április.
[6] A. Back, “Hashcash – a denial of service counter-measure”,
http://www.hashcash.org/papers/hashcash.pdf, 2002.
[7] R.C. Merkle, “Protocols for public key cryptosystems”, Proc. 1980 Symposium on Security
and Privacy, IEEE Computer Society, 122-133. old., 1980. április.
[8] W. Feller, “An introduction to probability theory and its applications”, 1957.

Forrás: Bitcoin

10