8. modul a 10-ból

Hogyan működik a Bitcoin

8.0 Bevezetés

A Bitcoin nem "szabályozatlan"; algoritmus szabályozza, nem pedig kormányzati bürokráciák. Korrupciómentes.
Andreas M. Antonopoulos

Ebben a modulban közelebbről megvizsgáljuk a Bitcoin technikai oldalát. Egyszerűen elmagyarázzuk azt a kriptográfiát, amely a protokollt védi, és bemutatjuk, hogyan működnek a tranzakciók. Néhány fogalom technikainak tűnhet, de ne aggódj. Sokan használják nap mint nap az internetet anélkül, hogy teljesen értenék, hogyan működik.

A Bitcoin technikai oldalának elsajátítása hosszú út, amit nem mindenkinek kell végigjárnia. Bár bátorítjuk a folyamatos tanulást, ez a modul a legfontosabb alapokra koncentrál.

A Bitcoin hálózat egy megosztott tranzakciós nyilvántartás, amelyet sok számítógép, úgynevezett csomópontok (node-ok) tárolnak. Ezt a nyilvántartást Bitcoin főkönyvnek hívják, és pszeudonim. Nem tartalmaz személyes adatokat, mint például neveket vagy életkort, csak tranzakciós adatokat és Bitcoin-címeket. A főkönyv minden tranzakciót nyomon követ a blokklánc kezdetétől fogva.

A Bitcoin protokoll működése
  • Munkabizonyíték (Proof-of-Work)
  • Kriptográfiai időbélyegek
  • Nehézségi szint igazítása
  • Peer-to-peer hálózati architektúra
  • Hash függvények és Merkle-fák
  • Nyilvános kulcsú kriptográfia
  • Blokkjutalom felezése

8.1 Biztonság kriptográfia révén

Amit a Bitcoin ad nekünk, az egy szilárd ígéret: a program pontosan az előírtak szerint fog végrehajtódni.
Andreas M. Antonopoulos

Nyilvános/magánkulcsú kriptográfia

Kriptográfia az az eljárás, amely során az információt titokká alakítjuk, amit csak a megfelelő emberek tudnak elolvasni.

  • Titkosítás az a folyamat, amely során az információt kódolt formára alakítjuk, hogy csak az tudja elolvasni, akinek megvan a megfelelő kulcsa.
  • Visszafejtés az a folyamat, amely során ezt a kódolt információt ismét olvashatóvá tesszük.

A hagyományos kriptográfiában két ember, akik privát módon szeretnének kommunikálni, először meg kell, hogy osszák egymással ugyanazt a titkos kulcsot, hasonlóan egy közös jelszóhoz. Az egyik fél ezt a kulcsot használja az üzenet titkosítására, mielőtt elküldi, a másik pedig ugyanazzal a kulccsal fejti vissza és olvassa el.

A rendszer problémája, hogy mindkét félnek már előre meg kell osztania a titkos kulcsot. Ha valaki más hozzáfér ehhez a kulcshoz, el tudja olvasni bármely elfogott üzenetet.

A Bitcoin ezt a problémát egy másik megközelítéssel oldja meg, amit nyilvános kulcsú kriptográfiának neveznek, ahol a felhasználóknak nem kell előre titkos kulcsokat megosztaniuk.

A nyilvános/magánkulcsú kriptográfia megoldja a titkok megosztásának problémáját. Jelszó megosztása helyett mindenkinek két kulcsa van: egy nyilvános kulcs és egy magánkulcs.

  • A nyilvános kulcs bárkivel megosztható.
  • A magánkulcs mindig titokban kell maradjon.

Ha János szeretne valamit elküldeni Árminnak, használhatja Ármin nyilvános kulcsát. Csak Ármin tudja azt feloldani a saját magánkulcsával. Még ha valaki el is kapja az üzenetet, nem tudja elolvasni vagy felhasználni a magánkulcs nélkül.

A Bitcoinban ezt a rendszert digitális aláírások létrehozására használják. Egy digitális aláírás bizonyítja, hogy a magánkulcs tulajdonosa hagyta jóvá a tranzakciót, hasonlóan ahhoz, mintha aláírnánk egy dokumentumot. Ez teszi lehetővé, hogy a Bitcoin tranzakciók biztonságosak és ellenőrizhetők legyenek harmadik fél megbízhatósága nélkül.

A Bitcoin tranzakciók során a bitcoin tulajdonjoga egyik címről a másikra száll át.

A titkosítást arra használják, hogy csak a bitcoin valódi birtokosa rendelkezzen jogosultsággal arra, hogy a pénzét másnak elküldje. Ez biztosítja, hogy a tulajdonát rosszindulatú szereplőktől védje.

További védelmi intézkedésként minden Bitcoin tranzakció automatikusan EGYEDI digitális aláírást kap. Ez az egyedi digitális aláírás manipulációbiztos technológián alapul, amely segíti a hálózatot abban, hogy ellenőrizze: valóban a bitcoin tulajdonosa, és nem valaki más küldte el azt.

Minden felhasználónak két kulcsa van: egy magánkulcs, amelyet titokban tartanak, és egy nyilvános kulcs, amely megosztható másokkal. A magánkulcs azonosítóként és tulajdonjog igazolásaként szolgál, megerősítve: „Ez a cím hozzám tartozik, és én rendelkezem felette.”

Hogyan működik egy Bitcoin tranzakció
  1. A tranzakció létrehozása: A felhasználó elindít egy Bitcoin tranzakciót, megadva például a fogadó címét és az elküldendő bitcoin mennyiségét.
  2. Digitális aláírás létrehozása: A küldő egyedi digitális aláírást hoz létre a saját magánkulcsával. Ez az aláírás egy egyedi kód, amely igazolja a tranzakció hitelességét.
  3. A tranzakció továbbítása: Az aláírt tranzakciót továbbítják a Bitcoin hálózatnak, jelezve a bitcoin tulajdonjogának átruházási szándékát a küldőtől a fogadó felé.
  4. Ellenőrzés a hálózaton: A Bitcoin hálózat csomópontjai megkapják a tranzakciót, és a fogadó nyilvános kulcsát a digitális aláírás hitelességének ellenőrzésére. a tranzakció esetében. Ugyanakkor a feladó nyilvános kulcsát használják az digitális aláírás ellenőrzésére.
  5. Megerősítés a Bitcoin hálózaton: Ha az ellenőrzés sikeres, a tranzakció bekerül a főkönyvbe, amely minden tranzakció biztonságos és átlátható nyilvántartása. Amint megerősítik, a bitcoin tulajdonjoga hivatalosan átszáll a feladótól a címzettre.

A digitális aláírás, amelyet a feladó privát kulcsával hoz létre, bizonyítja, hogy a tranzakciót a bitcoin tulajdonosa hagyta jóvá. A Bitcoin hálózat ezután ellenőrizheti ezt a bizonyítékot, és rögzítheti a tranzakciót.

A hashelés magyarázata

Ne ijedj meg a technikai kifejezésektől és matematikai fogalmaktól! Tudjuk, hogy nem mindenki rajong a matematikáért, de lehet, hogy megleped magad, és rájössz, hogy még a legösszetettebb ötletek is megérthetők egy kis erőfeszítéssel.

Egy függvény olyan, mint egy gép, amely információt vesz be, és valami újat hoz létre belőle. Az információ, amit a függvénynek adsz, az bemenet. Az új információ, amit a függvény létrehoz, a kimenet. A függvények segítenek a számítógépeknek feladatokat elvégezni és problémákat megoldani.

Mi az a függvény?

A függvény egy utasítássorozat, amely egy bemenetet vesz, és egy kimenetet állít elő. Gondolj rá úgy, mint egy receptre: ha követed a lépéseket a megfelelő hozzávalókkal, mindig kiszámítható eredményt kapsz.

A Bitcoinban a függvényeket tranzakciók feldolgozására és ellenőrzésére használják. Amikor valaki bitcoint küld, kriptográfiai függvények segítenek ellenőrizni, hogy a tranzakció érvényes-e, hogy a feladónak van-e elég egyenlege, és frissítik a Bitcoin főkönyv egyenlegeit. Ha a tranzakciót ellenőrizték és blokkba került, az a blokklánc állandó részévé válik.

Mi az az egyirányú függvény?

Az egyirányú függvény egy speciális típusú függvény, amelyet egy irányban könnyű kiszámolni, de visszafelé rendkívül nehéz. Például egy turmix elkészítése egyszerű, de a turmixot nem tudod visszaalakítani az eredeti hozzávalókká.

A Bitcoin biztonsága egyirányú függvényeken alapul. Ezeket használják a nyilvános és privát kulcsú kriptográfiában, lehetővé téve, hogy az emberek megosszák a nyilvános kulcsukat, miközben a privát kulcsukat titokban tartják. Még ha a nyilvános kulcs látható is, lehetetlen abból a privát kulcsot levezetni. Ez teszi a Bitcoin tranzakciókat biztonságossá.

Mi az a hash függvény?

A hash függvény olyan, mint egy titkos kódgép. Egy üzenetet vesz be, és kóddá alakítja.

Hogyan működik a hashelés a Bitcoin tranzakciókban

A Bitcoinban minden tranzakciót hash-sé alakítanak, mielőtt bekerülne a blokkláncba. A hash a tranzakció egyedi digitális ujjlenyomata. Ha valaki akár csak egy apró részt is megváltoztat a tranzakción, a hash teljesen megváltozik. Ez lehetővé teszi a hálózat számára, hogy könnyen észrevegye a manipulációt.

A hashelés szerepe a Bitcoin biztonságában

A hashelés segít megvédeni a Bitcoin hálózatot azáltal, hogy a tranzakciókat könnyen ellenőrizhetővé és csendben módosíthatatlanná teszi. Mivel minden tranzakciónak saját, egyedi hash-e van, a hálózat gyorsan észreveszi, ha valamit megváltoztattak.

A hash függvény adatokat vesz be, és egy fix hosszúságú szám- és betűsort, azaz hash-t állít elő. Ugyanaz a bemenet mindig ugyanazt a hash-t adja, de már egy apró változás is teljesen más eredményt hoz. Ez a tulajdonság lehetővé teszi, hogy a számítógépek ellenőrizzék, hogy az adatokat nem módosították.

A hashelés olyan, mint egy digitális adat ujjlenyomatának létrehozása. Ez az a folyamat, amikor egy digitális üzenetet fix hosszúságú kóddá alakítanak, amely egyedi azonosítóként szolgál. Ahogy egy ujjlenyomat azonosít egy embert, úgy egy hash azonosít egy digitális üzenetet.

A kimenet, vagyis a hash, mindig ugyanolyan hosszú, függetlenül attól, hogy az eredeti információ milyen hosszú volt. A Bitcoin néhány speciális hash függvényt használ, például a SHA-256 és a RIPEMD160.

Néhány példa alább:

  • A(z) SHA256 hash-e ennek a szövegnek hello world
    • b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
  • A karakterlánc SHA256 hash értéke: hello world.
    • 7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87
    • Figyeld meg, hogy a bemenetben egy apró változtatás teljesen megváltoztatja a kimenetet az elsőhöz képest
  • A letölthető iso fájl SHA256 hash értéke: Ubuntu 18.10
    • 7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765
    • Ez a bemenet egy hatalmas fájl, mégis a kimenet továbbra is ugyanakkora, fix hosszúságú

A hash-elést elképzelheted úgy is, mint egy kottát, amely megragadja egy zenemű lényegét. Ahogy egy kotta egy dallam egyedi ábrázolása, úgy a hash érték is egy adat egyedi ábrázolása.

Egy zenész a kotta és az előadás összehasonlításával meg tudja állapítani, hogy az előadás pontos-e. Hasonlóképpen, ha az átvett adat hash értékét összevetjük az eredeti hash értékkel, megállapítható, hogy az adat megváltozott-e az átvitel során.

Ahogy egy apró eltérés a zenei előadásban is máshogy hangzik, úgy az eredeti adaton végzett legkisebb változtatás is teljesen más hash értéket eredményez. Ez teszi a hash-elést hatékony eszközzé a Bitcoin tranzakciók integritásának és hitelességének biztosítására.

A nyilvános kulcs hash-eléssel történő kódolása növeli az információ biztonságát azáltal, hogy azt fix hosszúságú, olvashatatlan formátumba alakítja. A Bitcoin a SHA-256 és RIPEMD160 algoritmusokat használja a nyilvános címek előállításához. Az így kapott kimenet egyedi azonosítóként szolgál a nyilvános kulcshoz , és segít biztosítani a főkönyvben tárolt tranzakciók integritását és biztonságát. Az információ ilyen módon történő titkosításával nehezebbé válik az illetéktelenek számára az adatokhoz való hozzáférés és azok manipulálása.

A hash függvény tulajdonságai
  • Determinált: Ugyanazok az összetevők mindig ugyanazt a turmixot eredményezik. Ugyanígy, ugyanaz az adat mindig ugyanazt a hash-t adja.
  • Előképkép-ellenálló: Ha csak a turmixot látod, nem tudod kitalálni, pontosan milyen gyümölcsökből készült. Hasonlóképpen, ha csak a hash áll rendelkezésedre, nem tudod meghatározni az eredeti adatot.
  • Lavina effektus: Ha az összetevőknek akár csak egy kis részét is megváltoztatod, teljesen más turmixot kapsz. A hash-elésnél egy nagyon apró adatváltozás is teljesen más hash-t eredményez.
  • Ütközés-ellenálló: Rendkívül nehéz két különböző összetevő-kombinációt találni, amely pontosan ugyanazt a turmixot eredményezi. Ugyanígy, rendkívül valószínűtlen, hogy két különböző adat ugyanazt a hash-t adja.
  • Gyorsan ellenőrizhető: A turmix elkészítése gyors, és könnyű ellenőrizni, hogy valóban turmix lett-e. A hash függvények gyorsan számíthatók és bárki számára könnyen ellenőrizhetők.

Gyakorlat: SHA 256 hash generálása

Kíváncsi vagy, hogyan működik a hash-elés? Olvasd be a QR-kódot, és azonnal generálj SHA256 hash-t bármilyen általad választott szóból, mondatból vagy bemenetből. A hash függvények olyanok, mint a digitális ujjlenyomatok: egyirányúak, vagyis ha valamit hash-elsz, azt nem lehet visszafejteni. Próbáld ki, és győződj meg róla magad!

8.2 A UTXO modell

Mik azok az UTXO-k?

Ne ijedj meg a furcsa névtől! Az UTXO-kat úgy képzelheted el, mint a bitcoin darabjait, hasonlóan a pénztárcádban lévő bankjegyekhez és érmékhez. Például, ha egy 2 000 Ft-os terméket egy 5 000 Ft-os bankjeggyel fizetsz ki, 3 000 Ft visszajárót kapsz. A bitcoin is hasonlóan működik.

Az összes bitcoinod különböző UTXO-kból áll össze. Amikor bitcoint küldesz, a tárcád egy vagy több ilyen darabot használ fel a fizetéshez.

Ha az általad elköltött darab nagyobb, mint a küldött összeg, a fennmaradó érték visszajáróként, egy új UTXO formájában visszakerül hozzád. Ugyanakkor a címzett is kap egy új UTXO-t, amely a tőled kapott bitcoint képviseli.

A tárcád egyenlege egyszerűen az összes általad birtokolt UTXO összértéke.

Nem célszerű másokkal tudatni, hogy milyen UTXO-id vannak, mert ha valaki ismeri ezeket, nyomon tudja követni a tranzakcióidat, és végül azt is megtudja, mennyi pénzed van.

Példa
  1. Anna 5 BTC-t szeretne küldeni Balázsnak.
  2. A tárcája két UTXO-t használ fel, amelyek együtt 6 BTC-t érnek.
  3. A tranzakció elküldi 5 BTC-t Balázsnak, létrehozva egy új UTXO-t Balázs tárcájában.
  4. A fennmaradó 0,99 BTC visszajáróként visszakerül Annához, miután levonta a 0,01 BTC tranzakciós díjat.
  5. Miután a tranzakció megerősítést nyer, bekerül a Bitcoin főkönyvébe, és az Anna által felhasznált UTXO-k elköltöttnek minősülnek, így azokat már nem lehet újra felhasználni.
Források
How Bitcoin Works Under the Hood
Nézd meg a „How Bitcoin Works under the Hood” című videót

↑ Vissza a tartalomjegyzékhez