„A Bitcoin egy digitális fizetőeszköz, amelyet 2009-ben Satoshi Nakamoto hozott létre. Az elnevezés vonatkozik továbbá a fizetőeszközt kezelő nyílt forráskódú szoftverre, és az azzal létrehozott elosztott hálózatra is.

A többi elektronikus fizetőeszköztől eltérően a Bitcoin nem függ központi kibocsátóktól és hatóságoktól. A Bitcoin a peer-to-peer hálózat csomópontjai által tárolt elosztott adatbázisra támaszkodik. Az adatbázis tartalmazza a fizetések adatait, garantálva az elektronikus fizetőeszközökkel szembeni alapvető követelményeket. A biztonságot digitális aláírások és proof-of-work rendszer adja.”                                          

 forrás: wikipédia

 

Ugye minden világos és érthető? Ha nem teljesen, de érdekel a téma, akkor valószínűleg éppen jó helyen jársz... Ha érthető, de még jobban el szeretnél mélyedni benne, akkor szintén jó helyen jársz :).

 

 
 

 

Bitcoin technológia

 

A Bitcoin protokoll szülőatyja, Nakamoto Satoshi dolgozatában lefektetett alapokon nyugszik.

 

Bitcoin tranzakciók

 

A Nakamoto definíciója szerint a Bitcoin (mint elektronikus pénz) digitális aláírások láncolata. Ez a láncolat tranzakciók (küldések és fogadások) egymásutánjával alakul ki.

 

 

Tranzakciók láncolata  (forrás)

 

 

Minden tranzakció során nyilvános kulcsú digitális aláírással (Elliptic Curve Digital Signature Algorithm (ECDSA)) látja el a küldő az előző trazakció hash értékéből és a következő tulajdonos (tehát a fogadó fél) publikus kulcsából álló csomagot. Ezzel igazolja, hogy az összeget tényleg a fogadó félnek szánta. A hash, a cím (a fogadó fél publikus kulcsából képezett rövidebb, alfanumerikus alak) és az aláírás (script) naplózódik (azaz bekerül az éppen aktuális blokkba), így a publikus kulcsunk ismeretében mások is igazolhatják, hogy érvényes volt a tranzakció.

 

Érdekes, hogy a szokásos banki modellektől eltérően nem a tranzakciók titkosak és a számlatulajdonosok ismertek, hanem éppen fordítva. Az összes tranzakció ott van leírva a blokkokban, a blockexplorerrel bele is nézhetünk (pl. a 130134-es bokké itt van), viszont a tranzakciók címzettje csak úgy tudja igazolni magát (vagyis további tranzakciókra felhasználni a pénzét), ha rendelkezik a csomagban lévő publikus kulcsához tartozó privát kulccsal is (új kulcspárt nem tud felhasználni, hiszen annak a publikus kulcsa nem egyezne meg a csomagban lévőével, amit a fogadó fél egyből kiszúrna). Ezért nagyon fontos, hogy a kulcspárokat jól őrizzük meg (erre szolgál a wallet.dat, de erről majd később), mert a Bitcoin rendszerében a legféltenivalóbb kincsek azok a kulcspárok, amikkel a bitcoin számlánkra érkező pénzeket fogadjuk. Alapértelmezetten száz darab van belőlük, de tranzakciónként újabbak generódnak. (Bővebben a felhasznált kriptográfiai eljárásokról itt).

 

A modell szerint – a teljes anonimitás érdekében – minden tranzakciót más publikus kulccsal (értsd: más címmel) hajtjuk végre, de ez a gyakorlatban mégsincs így. Ha pl. megadom valahol, hogy a 1JKUiZspfBZL5u4SC2vyPr2fvFSBFYcACC -re küldjétek az adományokat, ha tetszik ez az írás :), akkor ugyanazt a publikus kulcsot több tranzakciónál is felhasználhatom, így könnyebben lenyomozható leszek.

 

 

Bitcoin blokkok

 

A rendszer legfontosabb alkotórésze (alapeleme) a blokk. A blokkok nemcsak azért nagyon fontosak, mert azok „megtalálásával” lehet pénzt keresni, hanem azért is, mert azokban tárolódik az összes tranzakció. Biztos ami biztos, a Bitcoin kliens a beüzemelése után mindenkinek  le is tölti az összeset (jelenleg kb. 130 ezret, ami cca. 350 MB), aztán még hozzá mindig a legújabbakat. Ilyen redundanciával a világ legbiztonságosabb banki adatbázisa sem rendelkezik...  Egy idő után ez persze tarthatatlan lesz, a tranzakcók számának növekedésével a blokkok mérete is nőni fog, ezért lehetőség lesz arra is, hogy a tranzakciónaplónak csak a releváns részeket kapjuk meg.

 

A blokkok generálási ütemére, a keletkeztetés algoritmusára itt nem térnék ki, mert az benne van minden alapleírásban. Sokkal érdekesebb, hogy mi van egy blokkban, és hogyan keletkezik egy új blokk.

 

A blokkok fejléce tartalmazza az alapinformációkat: az előző blokk hash-ét, az ún. merkle rootot (ami a blokkhoz tartozó tranzakciókat leíró adatblokkból képzett speciális hash), egy időbélyeget, egy számlálót, meg még néhány egyéb dolgot, a blokk adatcsomagja pedig a tranzakciókat. Amint látható, minden blokk fejlécében ott van az előző elfogadott blokk hash-e, így addig nem érdemes nekiállni egy új blokk gyártásának, amíg az előzőé be nem fejeződött. De mikor számít elfogadottnak egy blokk? Akkor, amikor a belőle képezett hash kisebb egyenlő egy előre beállított értéknél (target). A target viszont a nehézségtől függ, ami az idő előrehaladtával (a résztvevő bányászok számának növekedése és a technika fejlődése miatt) leginkább nőni fog.

 

Analógia: generálj egy véletlenszámot 1 és 1 000 000 között (a hash jó közelítésként egy igen nagy véletlenszámnak tekinthető). Ha a szám száznál kisebb (vagy éppen száz), akkor nyertél. Mennyi erre az esélyed? Elég kicsi, 1:10 000-hez. Ha csökkentem a targetet, még kisebb lesz az esélyed.

 

A blokk keletkezésekor tehát minden bányász a saját blokkján dogozik (a poolban dolgozók meg a bányakapitányén). A blokkok majdnem teljesen egyformák, de csak majdnem, hiszen ha teljesen egyformák lennének, mindig a legerősebb hardver lenne a leggyorsabb, de mivel a blokk fejléce (a merkle rooton keresztül) tartalmazza a saját címünket is, így mindenki mást fog hashelni. A bányagépeknek az a feladatuk, hogy a számlálót (nonce) pörgetve megtalálják a target alatti hasht (mivel egyetlen bit megváltoztatása is teljesen más hash értéket fog adni, így a számláló kiváló módszer az újabb és újabb hashek generálására). A nyertes (ellenőrzés után) szépen bezsebeli az 50 BTC-t (meg a jutalékokat), és kezdődik a történet elölről egy újabb blokkal. Mindez (persze elég nagy szórással) átlagosan tíz percenként történik meg.  

 

 

Bitcoin blokklánc

 

Rögtön felvetődik a kérdés, hogy mi van akkor, ha közel egy időben keletkezik két target alatti hash? Ki szolgáltasson ilyenkor igazságot, ki legyen a győztes?

Nos nincs győztes: a hálózat egyik része az egyik, a másik a másik blokkot fogja alapul venni az új blokk generálásakor, aztán amelyikük hamarabb végez (általában amelyik mögött nagyobb számítási erő áll), az lesz a nyertes, mert nála fog folytatódni a lánc. Ha netalántán ismét egyidőben végeznének, akkor folytatódik így tovább, mígnem az egyik ág győzni fog. Mi történik ilyenkor a másik ággal? Sajnos vadhajtás marad, az őt megalkotó bányász (vagy bányatársaság) meg így járt, mert egy fillért sem fog utána kapni (pontosabbn: néhány társaság fizet ilyenkor is valami bánatpénzféleséget, a saját nyeresége terhére). A folytatás nélküli blokkok tranzakciói meg bekerülnek a láncba, és minden megy tovább a maga útján.

 

 

Blokklánc, a szürkék a peches bányászok blokkjai (forrás)

 

 

 

 

 

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.