Hash: a digitális ujjlenyomat
A blokklánc legfontosabb építőeleme egy matematikai függvény, amely bármiből ujjlenyomatot készít.
Mielőtt megnéznénk, hogyan épül fel a blokklánc, meg kell ismernünk azt az eszközt, amelyre szinte minden épül benne: a hash-függvényt. A szót magyarul nem szokás lefordítani; a függvény eredményét hash-nek vagy hash-értéknek nevezzük.
Mit csinál egy hash-függvény?
A hash-függvény bármilyen bemenetből – egyetlen betűből, egy szerződés szövegéből, egy fényképből vagy egy teljes filmből – egy rögzített hosszúságú, rövid karaktersort számol ki. Ezt a karaktersort úgy képzelhetjük el, mint a bemenet digitális ujjlenyomatát: az adatot egyértelműen azonosítja, de magát az adatot nem tartalmazza.
A Bitcoin leggyakrabban használt hash-függvénye az SHA-256 (Secure Hash Algorithm, 256 bites változat). Az eredménye mindig 256 bit, azaz 64 darab hexadecimális karakter. (A hexadecimális, vagyis tizenhatos számrendszer a 0–9 számjegyeken kívül az a–f betűket is használja; egy karakter 4 bitet jelöl.)
A jó hash-függvény tulajdonságai
A blokklánc azért használhatja a hash-függvényeket, mert ezek a következő tulajdonságokkal rendelkeznek:
- Determinisztikus: ugyanarra a bemenetre mindig, mindenhol pontosan ugyanazt a kimenetet adja. Bárki ellenőrizheti más számítását.
- Gyors: a hash kiszámolása a számítógépnek egy pillanat.
- Egyirányú: a hash-ből a bemenet nem számolható vissza. Az egyetlen mód a próbálgatás: addig számolunk ki hash-eket különböző bemenetekből, amíg egyezést nem találunk – ez egy kellően bonyolult bemenetnél reménytelen.
- Lavinahatás: a bemenet legkisebb változása (egyetlen betű, egyetlen vessző) is teljesen más hash-t eredményez, nagyjából a bitek felét megváltoztatva. A két hash-ből nem látszik, hogy a bemenetek hasonlítottak egymásra.
- Ütközésmentes: gyakorlatilag lehetetlen két különböző bemenetet találni, amelyeknek ugyanaz a hash-e. (Elméletileg létezik ilyen pár, hiszen végtelen sok bemenet van és véges sok kimenet, de megtalálni nem lehet.)
Próbáld ki! Írj be bármit, és figyeld, hogyan változik az ujjlenyomat:
Interaktív elem – betöltés…
Mire használja a blokklánc?
A hash-függvény a blokkláncban szinte mindenhol jelen van:
- Tranzakció-azonosító: minden tranzakciónak van egy egyedi azonosítója, ami a tranzakció adatainak hash-e. Angol rövidítése TXID (transaction ID), és ez az a 64 karakteres sor, amelyet a nyomozó a blokkböngészőbe beír, ha egy tranzakciót keres.
- Blokkok összekapcsolása: minden blokk tartalmazza az előző blokk hash-ét – erről a következő kártyán lesz szó.
- Bányászat: a bányászok egy hash-feladványt oldanak meg.
- Címek: a kriptovaluta-címek is hash-függvények segítségével készülnek a kulcsokból.
Megjegyzés: a hash-függvény a digitális bizonyítékkezelésből is ismerős lehet: egy adathordozóról bizonyítási célra készült mentés hash-ével igazolható, hogy a mentés később nem változott. A blokklánc ugyanezt az elvet alkalmazza, csak sokkal nagyobb léptékben.
Extra tudásMekkora szám a 256 bit?
Az SHA-256 lehetséges kimeneteinek száma 2^256, ami egy 78 jegyű szám (nagyjából 1,16 × 10^77). Összehasonlításképpen: a látható világegyetemben becslések szerint kb. 10^80 atom van. Ha a Föld összes számítógépe a világegyetem kezdete óta folyamatosan hash-eket számolt volna, akkor sem jutott volna el ennek a számtérnek akár csak egy elenyésző töredékéig. Ezért tekinthetjük gyakorlatilag lehetetlennek egy adott hash-hez tartozó bemenet „kitalálását” – és ezért biztonságos ugyanez a nagyságrend a privát kulcsoknál is.
Extra tudásMás hash-függvények a kriptovilágban
A Bitcoin az SHA-256 mellett a RIPEMD-160 nevű hash-függvényt is használja a címek előállításánál, az Ethereum pedig a Keccak-256 függvényt (ez az SHA-3 szabvány egyik előzménye). Az elv mindegyiknél ugyanaz, csak a belső számítás és a kimenet hossza különbözik.
Ellenőrizd a tudásod
A kvíz betöltése…