2. Blockchain meghatározása
• Bitcoin: peer-to-peer elektronikus pénzrendszer
• White paper:
• Satoshi Nakamoto, 2008
• https://bitcoin.org/bitcoin.pdf
• Blockchain: Bitcoin publikus főkönyve, tranzakciókat tartalmazó blokkok
láncolata
• Jelenleg:
• Blockchain: a technológia
• Bitcoin (BTC): a blockchain digitális (vagy crypto) pénze
• 21 millió BTC maximum
• 8 tizedesig osztható: 1 satoshi = 0,00000001 BTC
3. Blockchain jellemzői
• Decentralizált peer-to-peer hálózat
• Nyilvános elosztott főkönyv
• Decentralizált matematikai és determinisztikus
pénzkibocsátás
• Decentralizált tranzakció ellenőrző rendszer
• „Ezzel a technológiával nemcsak információt, hanem
értéket is tudunk küldeni az Interneten”
• Azonnali küldés, nem visszafordítható
• Nincs dupla költés
4. A Bitcoin előzményei
• 80as években történtek az első próbálkozások
• Digitális pénz kriptográfiai alapokon
• Centralizált módon
• B-money (Wei Dai, 1998) – digitális pénz jellemzői
• Proof-of-work
• Nyílt főkönyv
• Bányászati díj
• Kriptográfia és digitális aláírás
• HashCash (Adam Back, 1997) – proof-of-work algoritmus
6. Kód verziók (alkalmazások)
• Full node:
• Teljes tranzakció történetet tárolja
• Képes bányászni
• Felhasználók wallet-jait tárolja
• Lightweight node
• Egy felhasználó wallet-ját tárolja
• Nem tárolja a teljes tranzakció történetet
• Full node-hoz kapcsolódik
• Web kliens
• Full node-hoz kapcsolódik
• Mobile kliens
• Smart phone alkalmazás
• Papír alapú megoldás
8. Kulcsok, Aláírás, Cím
• A kulcsok a node-okon tárolódnak
• Nincsenek értelmezve a hálózatban
• Hálózattól függetlenül létrehozhatók
• Ezekkel történi az aláírás
• Wallet-ban tárolódnak
• Fájl
• DB
• Kulcs párok:
• Publikus – mint pl. a bankszámlaszám
• Privát – mint pl. a PIN kód
• Bitcoin cím: publikus kulcs digitális újlenyomata – mint pl. a bankkártya tulajdonos neve
9. Kulcsok titkosítása
• Az 1970-es években lettek kifejlesztve a
publikus kulcs kriptográfia többféle
algoritmussal
• A blockchain az elliptikus görbe többszörözést
használja publikus kulcs kriptográfiára
• Ezzel generálja a kulcs párokat
• A publikussal lehet fogadni Bitcoint
• A priváttal lehet aláírni a tranzakciókat, amivel
elköltjük a Bitcoint
• Az aláírás hiteleségét a publikus kulccsal lehet
ellenőrizni, a privát kulcs ismerete nélkül
10. Kulcsok és címek generálása
• A privát kulcs egy véletlenszám
• A publikus kulcs ebből generálódik elliptikus görbe többszörözéssel
• Visszafelé nem generálható a privát kulcs a ublikus kulcsból
• A publikus kulcsból hash függvénnyel generáljuk a Bitcoin címet
• Visszafelé szintén nem generálható a címből a publikus kulcs
11. Wallet típusok
• Nemdeterminisztikus wallet
• X random kulcs
• Állandó mentés
• Determinisztikus (seeded) wallet
• Seed egy véletlen szám
• Seed-ből generálódnak a
kulcsok
• Seed mentése elegendő
• Könnyen hordozható
• Hierarchikus determinisztikus wallet
• Seed – Master Key - Kulcsok
• Kulcs generációk generálhatók
12. Mnemonic kód szavak
• 2048 elemű angol szó lista
• A seed megfeleltethető egy 12-24 elemű szó
listának
• Mindkét irányban egyértelmű (seed – mnemonic
lista)
• Ezzel könnyen hordozható a wallet
• Ebből minden kulcs és cím legenerálható
13. Hierarchikus determinisztikus wallet
• 2048 elemű angol szó lista
• A seed megfeleltethető egy 12-24 elemű szó
listának
• Mindkét irányban egyértelmű (seed – mnemonic
lista)
• Ezzel könnyen hordozható a wallet
• Ebből minden kulcs és cím legenerálható
• Mester lánc kód – kulcs generálás nehezítése
14. Tranzakció sturktúrája
in 1: 2 BTC
in 2: 2 BTC
in 3: 3 BTC
Bejövő (el nem költött)
6 BTC
Küldés out 1: 6 BTC
out 2: 0,9 BTC
out 3: 0,1 BTC
Kimenő
Saját cím
Saját cím
Saját cím
Fogadó cím
Saját cím
Nem definiált
• Annyi el nem költött tranzakció kell, ami fedezi a küldendő összeget
• A maradékot saját címre kell küldeni
• Egy kis részről nem nyilatkozunk, ez a tranzakció díj a bányászoknak
15. Tranzakció hitelessége
• Tranzakciók digitális aláírása
• Saját privát kulccsal aláírás
• Belekerül a fogadó publikus kulcsa is
• Ezzel ellenőrizhető, hogy hiteles volt-e az
aláíró
• Csak a címzett írhatja alá saját privát
kulcsával a következő tranzakciót
16. Tranzakciók láncolata
• Ami az egyik oldalon output, az a másik
oldalon input
• Tranzakciós díj
• Visszajáró
18. Tranzakció létrehozása
• Alkalmazások tárolják az el ne költött tranzakciókat
• (Lightweight node csak a wallet kulcsaihoz
tartozókat)
• Tranzakció definiálása (input, output, összeg)
• Aláírja az alkalmazás a privát kulccsal és lepecsételi
a címzett publikus kulcsával
• Propagálja a hálózatra
• A node-ok validálják
• A hálózat továbbítja minden node-ra néhány
másodperc alatt
19. Blockchain hálózat
• Peer-to-peer hálózat
• Nincs központ
• Egyenrangú felek
• Node alapfunkciói:
• Routolás
• Blockchain DB
• Bányászat
• Wallet
• Többféle node típus
• Full node
• Lightweight node
• Mining node
• Önálló
• Pool
21. A hálózat működése
• Induláskor keres egy működő node-ot (port 8333)
• Információ csere történik vele (handshake)
• Seed node-ok segítségével keres más node-okat
• Ha egy node leáll, akkor keres másik node-ot
• Megjegyzi, hogy kikkel volt kapcsolatban és azokkal
veszi fel újra a kapcsolatot amikor újraindul
22. Blockchain mint Főkönyv
• Az összes tranzakciót tárolja
• Elosztott, vagyis minden full node-on ott van
• Kizárja a dupla költés lehetőségét
• Block-ok láncolata
• Minden block hivatkozik az előzőre, mint szülőre
• Egy blokknak lehet több gyereke is – elágazás (fork)
23. Főkönyv felépítése
…
Genesis Block - 0 Block 1 Block 5xx.xxx
Cím A -> X BTC -> Cím B
Tranzakció 1
…
…
• 1 Block = kb. 1 Mb
• 1 Block aláírása = kb. 10 perc
• 230.000 tranzakció naponta = kb. 2,7 per sec.
• 3-6 Block a konfirmálás – 30-60 perc a továbbküldés
24. Block felépítése
T0 T1 T2 Tx
HeaderBlock
• Block:
• Block mérete
• Header
• Tranzakciók száma
• Tranzakciók listája
• Header:
• Hivatkozás az előző blokkra
• Metaadatok (nehézség, időbélyegző, nonce)
• Tranzakciók reprezentációja (Merkle fa gyökere)
26. Bányászat célja
• Új Bitcoinok kibocsátása
• Bizalmat épít a rendszerben azzal, hogy a tranzakciók csak akkor lesznek
elfogadva, ha megfelelő mennyisségű számítási kapacitás lett felhasználva a
blokk létrehozásához
• Egyfajta lassítás a rendszernek annak érdekében, hogy ne lehessen
hamisítani vagy átvenni az uralmat fölötte (következmény: jelenleg lassú a
tranzakciók elfogadása)
• Mi történik, ha valaki átveszi az uralmat?
• Hatalmas számítási kapacitás kell hozzá
• Ennek a költsége is nagyon magas
• Azonnal kiderül a csalás
• Elveszik a bizalom, vele együtt az érték
• Cserébe nem kap semmit
27. Bányászat lépései
• Tranzakciók propagálódnak a hálózatra
• Minden egyes új tranzakció bekerül az alkalmazások ideglenes területére
• Bányászat ezekből teszi össze az új blokkot
• Belekerül egy hivatkozás az előző blokkra
• Header létrehozása
• Hashelés az eredmény eléréséig
• Blokk propagálása
28. Block bányászata
T0 T1 T2 Tx
12,5 BTC a bányásznak
Header
0000008bb8f0e731f0496b8e530da984e85fb3cd2bd81882fe8ba3610b6cefc3
SHA256 (header + nonce)
új nonce + SHA256
• Block összeállítása (max. 1Mb):
• 1. tranzakció a bányászati díj
• Legértékesebb tranzakciók (méret/díj)
• Bányászati díj:
• Kezdetben 50 BTC
• 210.000 Block után fejeződik
• Jelenleg 12,5 BTC
• Tranzakció díj:
• Bejövő BTC-k – elküldött BTC-k
• 21 m BTC a max.
• 2140-re fogy el
Block
30. Bányászatból adódó elágazás (fork)
• Egyszerre propagál két bányász
blokkot – elágazás
• Amelyik ágon előbb lesz meg az új
blokk, azt fogadja el a hálózat
• 3 blokknál többször gyakorlatilag
nem fordulhat elő azonos találati
idő
• Ezért szokás 3-6 blokkot megvárni
• Különböző ágakon lehetnek azonos
tranzakciók
33. Smart Contract
• Elosztott és biztonságos
• Nincs központi felügyelet
• Saját valuta (ETH)
• Automatikus végrehajtás feltételek teljesülése esetén
• Platform saját nyelvvel
• Azonnali disztribúció