keresés

2016. október 28., péntek

Hogyan működik a Bitcoin? Technikai részletek I. - A tranzakciós lánc

A Bitcoin Rendzser belső működésének technikai összefoglalója, azoknak akiket mélyebben érdekel a rendszer felépítése és működése. II. és III. rész

Hogyan működik a pénzküldés a Bitcoin rendszerében

Alapvetően ahhoz, hogy Anna pénzt tudjon küldeni Bélának, egy üzenetet kell közvetítenie a hálózatnak a számlák nevével és az utalni kívánt összeggel. Minden számítógép ami megkapja az üzenetet, frissíti az adatbázisát, majd továbbküldi azt a többinek. De hogyan lehetnek a gépek biztosak abban, hogy a tranzakciót a pénz jogos tulajdonosa kezdeményezte, nem pedig valaki más Anna nevét használva?

Ahhoz, hogy bitcoinokat tudjunk küldeni szükségünk egyfajta jelszóra, ezt a jelszót pedig "Digitális Aláírás"-nak nevezzük. Mint egy valódi aláírás, ez az ami bizonyítja az üzenet hitelességét egy matematikai algoritmuson keresztül, mely megakadályozza a hamisítást vagy másolást. Egy puszta jelszóval ellentétben, minden egyes tranzakcióhoz egy teljesen más Digitális Aláírásra van szükségünk. Ahhoz, hogy létrehozzunk egy ilyen aláírást két dologra van szükségünk: egy privát kulcsra, mellyel megalkotjuk az aláírást és egy nyilvános kulcsra, melyet mások használhatnak, hogy ellenőrizzék az aláírás valódiságát. Valahogy úgy lehetne elképzelni mint a privát kulcsunk lenne a valódi jelszó, az aláírás pedig egyfajta "közvetítő", mellyel be lehet bizonyítani, hogy valóban miénk a jelszó, anélkül, hogy azt valójában fel kéne fednünk. A nyilvános kulcsok a különböző számlák címei, tehát amikor Anna pénzt akar küldeni Bélának gyakorlatilag Béla nyilvános kulcsát használja, mint cím.



Ahhoz, hogy pénzt tudjunk utalni, be kell bizonyítanunk, hogy mi vagyunk a tulajdonosai egy nyilvános kulcsnak, melyre korábban pénzt küldtek, ezt pedig úgy tudjuk megtenni, hogy létrehozunk egy Digitális Aláírást egy korábbi tranzakciós üzenet nyilvános kulcsából (mely az adott tranzakciókor a mi címünkként szolgált) és a privát kulcsunkból. A Digitális Aláírás mögötti matematikai egyenletek lehetővel tetszik, hogy a hálózatot használó számítógépek megerősítsék, a feladó birtokában volt a privát kulcs, anélkül, hogy tudnák valójában mi volt az. És mivel az Aláírás függ magától az üzenettől, ezért minden egyes tranzakciónál más és más lesz. Ez azt is jelenti, hogy senki nem tudja módosítani az üzenetet miközben az átfut a hálózaton, hiszen az megváltoztatná, így érvénytelenítené az aláírást.

Azt ezt leíró matematikai egyenletek igen komplexek, akit érdekel a téma az itt és itt indulhat el megértésükhöz.

Bitcoin tranzakció és az adatbázis részletesen

Tehát eddig tudjuk, hogy Digitális Aláírások által van biztosítva, hogy egy tranzakciót valóban a jogos tulajdonos kezdeményezett, ám azt, hogy a gépek a rendszerben hogyan követik nyomon kinek mennyi pénze van azt az elején kicsit leegyszerűsítettük. Valójában nincsenek számlák egyesével nyilvántartva, de hogyha nincsenek számláink, hogyan tudjuk kinek mennyi pénze van és honnan tudjuk van-e annyi amennyit küldeni szeretnénk?

Ahelyett, hogy számlaegyenlegeket használnánk, úgy tudjuk bizonyítani hány bitcoin áll rendelkezésünkre, hogy korábbi tranzakciókra hivatkozunk. Például: ha Anna 5 bitcoint akar küldeni Bélának, akkor más olyan tranzakciókra kell hivatkoznia, melyben ő kapott legalább 5 bitcoint. Ezeket a hivatkozott tranzakciókat hívjuk "bemenet"-nek. Más számítógépek a hálózaton leellenőrzik, hogy valóban Anna volt-e ezen tranzakciók fogadója, illetve, hogy összegük valóban legalább 5 bitcoin. 

Nézzünk meg egy valódi tranzakciót, hogy hogyan is működik ez a valóságban: link


Ebben a példában 6 bemenetre hivatkoztunk, melyek összege 139.6 bitcoin. A kimeneti részen két sort látunk, ez annak köszönhető, hogy a tranzakciókat nem lehet szétbontani, így ha nem tudunk pontos összeget utalni, a maradék összeget vissza kell utalni magunknak. Ezek alapján a bemeneti láncok alapján tudjuk meghatározni, hogy most éppen kinél van adott mennyiségű bitcoin, hiszen minden tranzakció függ az előtte lévő összes tranzakciótól. De hogy lehetünk biztosak benne, hogy az összes korábbi tranzakció valódi volt-e? Amikor először feltelepítjük a Bitcoin wallet software-t (mellyel kezelhetjük bitcoinjainkat), az letölti az összes korábban létrejött tranzakciót, tehát létrehoz egy adatbázist a mi gépünkön is, és megvizsgálja a tranzakciók valódiságát egészen a legelsőig.

Mikor ezzel a tranzakciós módszerrel elköltünk valamennyi bitcoint, a hálózaton lévő számítógépek leellenőrzik, hogy nem használtuk-e már fel ezt a tranzakciót egy korábbi alkalommal, így biztosítva azt, hogy nem tudunk 1 bitcoinból 100-at csinálni pusztán azzal, hogy 100 alkalommal hivatkozunk ugyanarra az egy tranzakcióra. Ezt úgy érik el, hogy átvizsgálnak minden korábbi tranzakciót ami valaha létrejött, és bár ez időigényesnek tűnik egyfajta indexelési algoritmus segítségével gyorsan végbemegy. Tehát összefoglalva ahelyett, hogy egy adatbázist vezetnénk, hogy kinek épp mennyi pénz van a neve mellett, egyfajta tranzakciós lánc az, amit a hálózaton lévő számítógépek tárolnak. Az hogy egy bitcoin a miénk nem jelent mást, mint hogy ezen a listán vannak olyan tranzakciók, melynek kimenete a mi nevünkhöz mutat, és még nem lettek elköltve, tehát nem lettek bemenetként felhasználva.

Források:

Nincsenek megjegyzések:

Megjegyzés küldése