A Bitcoin létrehozása – “Számlanyitás”

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

***

SZÁMLANYITÁS SZEMÉLYAZONOSSÁG NÉLKÜL

Létrehoztunk egy központi irányítás nélküli elosztott főkönyvet. Egy lottószerűen működő bányászati rendszert, amellyel eldöntjük, ki írhat bele. Egy hálózatot, amely megbünteti a csalókat és jutalmazza a becsületes játékosokat. Egy módszert, amellyel hozzáigazíthatjuk az erőforrásokhoz a követelményeket, hogy megmaradjon a kibocsátási ráta. Végül egy szabályrendszert, amely alapján a Proof of Work energiafelhasználása és a tranzakciós történet alapján meghatározhatjuk a lánc hitelességét, valódiságát.

Nem került viszont még szóba a személyazonosság kérdése. A bankok esetében úgy tudod használni a pénzedet, hogy először azonosítod magad a bank előtt. Az ATM-hez kell a kártyád és a pin-kódod, a banki appokhoz pedig a felhasználóneved és a jelszavad. A bank megbizonyosodik arról, hogy tényleg te, és nem másvalaki használja a személyazonosságodat.

A mi esetünkben nincsen központi szereplő, aki nyilvántartaná a felhasználókat, hogyan hozhatunk létre így számlákat a Bitcoin-alapú pénzügyi rendszerünkben? Hogyan lehetne elérni Satoshi célját, hogy legyen különválasztva az identitásunk és a pénzügyeink, hogy így kerüljük el a személyazonosság-lopást, és a harmadik felek hozzáférését a személyes adatainkhoz? Hogyan tudunk megbizonyosodni arról, hogy amikor Alice kihirdeti a 2 dolláros átutalását Bobnak, akkor tényleg Alice beszél, és tényleg joga van átutalni azt a pénzt?

Hogyan hozzunk létre egy Bitcoin-számlát?

Nincs központi szereplő, aki kézben tartaná a felhasználói regisztrációkat, így nem bízhatjuk rá senkire ezt a munkát. Mi lenne, ha lehetővé tennénk, hogy bárki regisztrálja a saját felhasználónevét, és jelszavát? A bank megnézné, hogy az adott felhasználónév foglalt-e már, vagy szabad, de ez itt nem működik, mert nincs bank, nincs központi szereplő. Olyasmire van szükségünk, ami nagyobb, erősebb, és sokkal egyedibb, mint egy egyszerű felhasználónév, jelszó kombináció. Az előző fejezetekből már sejthetjük, mi is ez. Egy jó hosszú, véletlenszerű számra van szükségünk.

Ahogyan lehetővé tettük, hogy mindenki létrehozza a saját lottószelvényeit, ugyanezzel a módszerrel létre lehet hozni a számlákat is. Egy Bitcoin-számla, vagy ahogyan sokszor hivatkoznak rá, egy Bitcoin-cím létrehozásához először generálunk egy 256 bites, matematikailag összekapcsolódó szám-párt, ezt pedig a legtöbbször publikus és privát kulcsnak nevezzük. Azt már tudjuk, hogy egy 256 bites szám olyan nagy, mint ahány atom van az univerzumban, így szinte lehetetlen, hogy két ember véletlenül ugyanazt a számot generálja le magának. A címünket pedig megadhatjuk bárkinek, aki pénzt akar küldeni nekünk. De hogyan működik ez a gyakorlatban?

A titkosítás az a folyamat, amikor bizonyos adatokat speciális módszerekkel lekódolunk, így csak az tudja elolvasni, aki rendelkezik a megoldókulccsal. Gyerekként akár találkozhattunk is különböző kódoló/dekódoló játékokkal, amelyek halandzsává változtatták a szöveget, majd vissza, olvasható formába. Ez az úgynevezett szimmetrikus titkosítás, hiszen ugyanaz a kulcs kell a kódoláshoz és a megfejtéshez is. A publikus/privát kulcspár technikája aszimmetrikus, mivel az egyik kulcs a kódoláshoz kell, a másik pedig a dekódoláshoz.

A publikus kulcsodat bátran megoszthatod bárkivel. Aki küldeni szeretne neked valamit, ennek a segítségével le tudja kódolni. Mivel pedig a privát kulcs nálad van, kizárólag te tudod elolvasni, hogy mit küldtek neked.

Lássuk, Alice hogyan tudja elküldeni a coinjait Bobnak. Hogy Bob megkaphassa a pénzét, létrehoz egy kulcs-párt, a privát kulcsát pedig titokban tartja. Ezután generál egy bitcoin-címet, egy hosszú karaktersort, amelyet a publikus kulcsa hashelésével kap meg. Ezt a bitcoin-címet elküldi Alice számára.

A bitcoin-címeket elképzelhetjük akár postafiókként is, csak éppen levelek helyett ide bitcoint lehet küldeni. Elolvasni, megnyitni pedig csak az tudja, aki rendelkezik a privát kulccsal, így a bitcoint is csak ez a személy tudja elkölteni.

Mikor egy bankon keresztül mozgatsz pénzt, megadod a felhasználóneved és a jelszavad. Mikor megírsz egy csekket, elismervényt, aláírod, ezzel bizonyítod, hogy te írtad. Mikor bitcoint akarsz küldeni, akkor be kell bizonyítanod, hogy nálad van a coinokat tartalmazó cím privát kulcsa.

Alice be kell, hogy bizonyítsa, a fiókjához tartozó publikus cím privát fele, a privát kulcs is nála van. De nem akarja ezt senkinek megmutatni, nehogy rossz kezekbe kerüljön, és esetleg feltörjék a fiókját, hogy ellopják a bitcoinjait.

A kulcs birtoklását egy úgynevezett digitális aláírással lehet bizonyítani. Amikor Alice elindít egy tranzakciót, az egy rakás adatot jelent, és valahogy így néz ki:

Az 12345 bitcoin-cím, amelyen 2,5 BTC egyenleg van,
elküld 2 bitcoint az 56789 címre,
és vissza 0,5 bitcoint az 12345 címre.

A valóságban a bitcoin-címek hosszú, 160 bites számok. Miután megvan a tranzakció szövege, fogja ezeket az adatokat, és a privát kulcsa segítségével titkosítja, létrehozva a digitális aláírást.

Mikor kihirdeti a hálózaton az utalását, megmutatja a publikus kulcsát, és a privát kulcsával titkosított digitális aláírást. Ez a gyakorlatban így néz ki:

  • Coinokat küldök az 12345 bitcoin-címről.
  • Itt van az 12345 bitcoin-címhez tartozó publikus kulcs, ezt le tudod ellenőrizni, mivel ha hasheled a kulcsot, megkapod ugyanezt a címet.
  • Itt van a tranzakcióhoz tartozó digitális aláírás, amelyet a publikus kulcshoz tartozó privát kulccsal titkosítottam. Ezt is le tudod ellenőrizni, hiszen a publikus kulccsal vissza tudod fejteni, és láthatod, hogy tényleg ezt a tranzakciót hitelesíti.
A tranzakció adata a privát kulccsal van titkosítva, egy digitális aláírás létrehozásával. Vissza lehet fejteni a publikus kulccsal, amelyet mindenki ismer.

Mindenki ismeri Alice publikus kulcsát, így könnyen dekódolható a digitális aláírása. Márpedig ahhoz, hogy Alice publikus kulcsával dekódolni tudjuk az üzenetet, ahhoz Alice a privát kulcsával kellett, hogy titkosítsa azt. Ha nem így tett volna, nem lehetne visszafejteni a kódolást, hiszen ez a fajta titkosítás csak és kizárólag akkor működik, ha a megfelelő privát kulcs, publikus kulcs párral van létrehozva. Emiatt nincs szükség arra, hogy Alice mindenkinek megmutassa a privát kulcsát. Mindenki tudja, hogy nála van, különben nem tudta volna kódolni a digitális aláírását.

A csekkeken lévő aláírásoddal, vagy a banki felhasználónév, jelszó kombinációval ellentétben a Bitcoin esetében használt digitális aláírásod kifejezetten csak az adott tranzakcióra vonatkozik. Ezért nem lehet ellopni, és egy másik tranzakcióhoz felhasználni. Minden egyes tranzakció új, a többitől különböző aláírást kap, még akkor is, ha ugyanarról a címről küldöd, ugyanarról a privát kulcsról. Ez azért van így, mert a tranzakció egyedi, új adatokat is tartalmaz, például az időpontot, és minden egyes új adat, új input megváltoztatja az outputot, a hasht.

1 thought on “A Bitcoin létrehozása – “Számlanyitás”

Comments are closed.