Blokkok és a lánc
Hogyan kapcsolódnak egymáshoz a blokkok, és miért nem lehet utólag átírni a múltat?
Az új tranzakciók nem egyenként kerülnek a főkönyvbe, hanem csomagokban. Ezeket a csomagokat nevezzük blokkoknak, a belőlük felépülő láncot pedig – innen a név – blokkláncnak.
Mi van egy blokkban?
Egy blokk két részből áll:
- a blokkfejlécből (block header): rövid összefoglaló adatok a blokkról, köztük az előző blokk hash-e és egy olyan összesített ujjlenyomat, amely a blokk összes tranzakciójából készül;
- és a tranzakciók listájából.
Minden blokknak van egy egyedi azonosítója: a blokkfejléc hash-e, röviden a blokk hash-e. Mivel a fejlécbe az összes tranzakció ujjlenyomata is belekerül, a blokk hash-e valójában a teljes blokk tartalmától függ. Ha a blokkban bármi megváltozik – akár egyetlen tranzakció egyetlen számjegye –, a blokk hash-e is teljesen más lesz (emlékezzünk a hash-függvények lavinahatására).
A blokkok sorszámát blokkmagasságnak (block height) nevezzük. A legelső blokk a 0-s sorszámú genezis blokk, amelyet Satoshi Nakamoto hozott létre 2009 januárjában.
A lánc: minden blokk az előzőre mutat
Minden blokk fejléce tartalmazza az előző blokk hash-ét. Így a blokkok egy láncot alkotnak, amely a legújabb blokktól egészen a genezis blokkig visszavezet. A lánc minden szeme rögzíti az előtte lévő szem pontos „ujjlenyomatát”.
Miért nem lehet utólag megváltoztatni?
Tegyük fel, hogy valaki egy korábbi blokkban átírna egy tranzakciót, például hogy eltüntesse egy utalás nyomát, vagy ugyanazt a bitcoint még egyszer elköltse. Ettől megváltozik a blokk hash-e, a következő blokkban tárolt „előző hash” pedig már nem egyezik vele: a lánc ezen a ponton elszakad. A csomópontok az ilyen láncot azonnal érvénytelennek tekintik.
A hamisítónak tehát nemcsak a módosított blokkot, hanem az utána következő összes blokkot is újra el kellene készítenie – ráadásul gyorsabban, mint ahogy a hálózat többi része újabb blokkokat fűz a lánc végére. Hogy ez miért gyakorlatilag kivitelezhetetlen, azt a következő kártyán, a bányászatnál látjuk majd.
Próbáld ki magad! Írd át bármelyik blokk tartalmát, és figyeld, mi történik a lánccal. A „Bányászat” gombbal a blokk újra érvényessé tehető – de csak az, és nem a többi:
Interaktív elem – betöltés…
Megjegyzés: a blokklánc tehát olyan nyilvántartás, amelybe csak hozzáírni lehet, törölni vagy javítani nem. Ami egyszer bekerült és megerősítést kapott, az gyakorlatilag örökre ott marad. Nincs adatmegőrzési idő: a tíz évvel ezelőtti tranzakciók ma is ugyanúgy olvashatók, mint a tegnapiak.
Extra tudásMi van pontosan egy Bitcoin-blokk fejlécében?
A Bitcoin-blokk fejléce mindössze 80 bájt, és hat mezőből áll:
| Mező | Méret | Mit tárol |
|---|---|---|
| Verzió | 4 bájt | melyik szabálykészlet szerint készült a blokk |
| Előző blokk hash-e | 32 bájt | ez a „kapocs”, amely a láncot összetartja |
| Merkle-gyökér | 32 bájt | a blokk összes tranzakciójának összesített ujjlenyomata |
| Időbélyeg | 4 bájt | mikor készült a blokk (másodpercben, 1970. január 1. óta) |
| Nehézségi cél (bits) | 4 bájt | mennyire kicsi hash-t kell találni |
| Nonce | 4 bájt | a bányász által próbálgatott szám |
A blokk hash-e ennek a 80 bájtnak a kétszeres SHA-256 hash-e.
Extra tudásA Merkle-fa
A tranzakciók összesített ujjlenyomatát, a Merkle-gyökeret egy úgynevezett Merkle-fa segítségével számolják ki. A tranzakciók hash-eit párosával összefűzik és újra hash-elik, majd a kapott hash-eket megint párosával, és így tovább, amíg egyetlen hash nem marad: ez a gyökér. A módszer előnye, hogy egy tranzakció blokkbeli jelenléte néhány hash segítségével bizonyítható anélkül, hogy a teljes blokkot le kellene tölteni – a telefonos tárcák is erre építenek.
Ellenőrizd a tudásod
A kvíz betöltése…