| 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.
|
|