Bitcoin
digitální měna budoucnosti nebo nafouklá bublina?
Jaroslav Brychta Jan Skalický
2 / 26
Bitcoin
základní principy, technické aspekty
Jan Skalický
3 / 26
Bitcoin - vlastnosti ●
digitální měna a platební systém
●
plná decentralizovanost
●
deterministická inflace
●
asymetrické šifrování
●
anonymita používání
●
open-source (MIT licence)
4 / 26
stručná historie ●
1998 – koncept „crypto-currency“ [Wei Dai @ cypherpunks mailing list]
●
2007 – paper popisující měnu Bitcoin [Satoshi Nakamoto @ metzdowd.com]
●
2008 – první implementace Bitcoin [Satoshi Nakamoto, Windows, MSVC]
●
Satoshi Nakamoto – identita – ?
5 / 26
platební systém ●
●
historie všech transakcí je uložena v blockchainu (účetní kniha, „ledger“) blockchain je spojový seznam bloků –
●
●
blok 0 (první blok) je „vytesán do skály“
blok je zakódovaná množina transakcí transakce je dvojice množin vstupů a výstupů z/do Bitcoin adres
6 / 26
decentralizovanost ●
uzly systému jsou propojeny p2p sítí
●
každý uzel v síti může
●
–
generovat / anoncovat transakce
–
stahovat / ověřovat staré bloky
–
generovat nové bloky (potvrzovat anoncované transakce)
Bitcoin blockchain browser –
http://blockexplorer.com
7 / 26
inflace ●
●
●
inflace = zvyšování objemu peněz generování bloků kromě potvrzování transakcí vytváří i nové BTC („mining“) odměna za mining –
motivuje uzly k potvrzování transakcí
–
exponenciálně klesá (po 210 kblocks ~ 4 yr)
–
nominálně 50 BTC, 25 BTC (nyní), 12.5 BTC…
8 / 26
vsuvka - hash ●
●
●
hash je zobrazení z množiny dat obecné délky do množiny hodnot omezené délky kryptografická hashovací funkce: –
uniformní (obecně žádoucí vlastnost)
–
nelinearní (malá ∆ vstupu = velká ∆ výstupu)
–
asymetrická výpočetní složitost
Bitcoin používá hash algoritmus SHA-256
9 / 26
generování bloků (1) ●
blok je validní jen pokud má nízký hash
(sekvence počátečních nul dlouhá dle aktuální difficulty) ●
●
difficulty se mění každých 2016 bloků –
hodnota > 1 zajišťuje „proof of work“
–
zpětnovazebně stabilizuje průměrnou rychlost generování na 1 blok za 10 min
řízená rychlost generování způsobuje deterministickou inflaci měny –
max. 21 milionů BTC (1 BTC = 108 satoshi)
10 / 26
deterministická inflace
11 / 26
generování bloků (2) ●
součástí dat bloku je pole „nonce“ –
●
●
32-bit počítadlo (sůl, na které nezáleží)
hledá se takové nonce, pro které platí podmínka nízkého hashe –
hash ≤ target … validní blok (úspěšná těžba)
–
hash > target … inkrementace nonce a retry
úspěšný miner získává kromě odměny za blok ještě dobrovolné transakční poplatky
12 / 26
rozdvojení blockchainu ●
Při miningu může nastat situace, kdy více různých uzlů najde aktuálně těžený blok (druhý miner v pořadí se nestačil dozvědět o prvním)
●
Řešením je použití vždy nejdelšího řetězu –
generování plynule pokračuje nad vrcholem
–
po vygenerování dalších bloků budou všechny odbočky kromě jedné kratší než nejdelší
–
generující uzly jsou k výběru dobrého vrcholu motivovány rizikem zapomenutí jejich výtěže (transakce z nepoužitých bloků jsou vráceny k novému potvrzování)
13 / 26
potvrzení transakce ●
riziko vypadnutí hotové transakce vlivem rozdvojení blockchainu se s počtem jejích potvrzení (hloubkou) rapidně snižuje –
●
různí obchodníci požadují různou hloubku –
●
bylo by nutné přegenerovat celý kus historie
pro hloubku 6 je riziko vypadnutí vlivem útoku při držení 10 % hashrate sítě ~ 0.1 %
pro vytěžené BTC se žádá hloubka 100
(není návratu do fronty k potvrzení jako u transakcí)
14 / 26
vytvoření transakce ●
●
●
Bitcoinová peněženka je množina klíčů pro asymetrické šifrování (ECDSA) vytěžené BTC jsou přiděleny veřejným klíčům (Bitcoinovým adresám) minera jakožto výstupy „generující“ transakce „obyčejná“ transakce má navíc vstupy – odkazy na výstupy předchozích transakcí –
vstupy – výstupy = transakční poplatek ≥ 0
transakce – příklad (včetně rozměnění)
15 / 26
ověření transakce
16 / 26
(zjednodušeně) ●
odesílatel transakce prokazuje vlastnictví dosud nepoužitého vstupu (držení klíčů) –
●
odesílatel určuje příjemce výstupu –
●
podepsáním něčeho pomocí soukromého klíče
podepsáním adresy příjemce (to „něco“ výše)
ostatní uznají transakci ověřením podpisů –
veřejné klíče odesílatele znají z adres vstupů
ověření transakce
17 / 26
(skutečnost) ●
adresa je pouze otisk veřejného klíče –
●
výstup se autorizuje i pomocí veřejného klíče
odesílatel podepisuje celou transakci
(ve zjednodušeném tvaru – bez vlastního podpisu) ●
k ověřování se používá skriptovací jazyk –
vyhodnocuje ho zásobníkový automat nad kombinací „zámku“ (skript pro odemknutí výstupu) a „klíče“ (autorizační data vstupu)
–
velmi obecné, umožňuje komplexní podmínky
18 / 26
anonymita ●
kompletní historie všech transakcí je decentralizovaně uložená všude, ale... (pro každou adresu je znám okamžitý zůstatek)
●
Bitcoinové adresy nejsou (nemusí být) nijak spojeny s fyzickou identitou (zkompromitování je věcí zodpovědnosti uživatele)
●
Bitcoinové adresy nemusí být recyklovány (pro každou další transakci může být použita nová)
●
další možnosti: mixing services, Tor
19 / 26
důsledky vlastností ●
neexistuje možnost „vrácení peněz“
(vlastnictví BTC je totální – nelze je ani násilně zabavit) ●
transakční poplatky jsou nejmenší možné (dokonalá konkurence miningu odpovídá ceně energie)
●
od určitého okamžiku lehce deflační
(ztráty privátních klíčů – havárie HW, úmrtí majitele… ) ●
čas do potvrzení > ~ 10 min * hloubka –
prostor pro odvozené systémy mikroplateb
dodatek A: aplikace (1) – seznam ●
existující Bitcoin „peněženky“: –
Bitcoin-Qt (Win/Linux/Mac) [bitcoin.org]
–
MultiBit (Win/Linux/Mac)
–
Armory (Win/Linux)
–
Electrum (Win/Linux/Mac, Android)
–
Bitcoin Wallet (Android, Blackberry)
–
...
20 / 26
dodatek A: aplikace (2) – Bitcoin-Qt
21 / 26
dodatek B: mining, pools
22 / 26
●
2008–2010 – těžba na CPU
●
2010–2011 – těžba na GPU (VLIW)
●
2011–2012 – těžba na FPGA
●
2012–2013 – těžba na ASIC
●
2011+ – distribuce těžby do mining poolů –
pool rozdává práci na těžbě více klientům
–
jejich odměna je proporciální k počtu hashů
dodatek C: útoky ●
Race attack –
●
při akceptování hloubky 0
Brute force attack –
●
23 / 26
předpříprava delší větve rětězu s opakovanou útratou týchž BTC (od minulého checkpointu)
>50 % attack –
varianta předchozího pro případ, že útočník disponuje větší výpočetní silou než zbylá síť
(Bitcoin pooly však disponují větší výpočetní silou než superpočítače)
dodatek D: výpočetní síla v čase
24 / 26
dodatek E: další implementace ●
25 / 26
Existují odvozené sítě na technologii BTC: ●
Litecoin (rychlejší transakce, ko-těžba s BTC)
●
PPCoin („proof of stake“, minimalizace spotřeby)
●
Namecoin (eviduje názvy, např. DNS pro síť Tor)
●
Primecoin (proof of work založený na prvočíslech)
●
Novacoin
●
Terracoin
●
Bytecoin
●
… (*coin)
26 / 26
zdroje, odkazy obecné informace
trhy
●
http://bitcoin.org
●
http://bitcoinity.org/markets/
●
http://bitcoin.org/bitcoin.pdf
●
http://www.bitcoincharts.com
●
http://bitcointalk.org/
●
http://www.bitcoinwatch.com
●
http://en.bitcoin.it/wiki/
●
http://www.cryptocurrency.org
on-line monitory ●
http://www.blockexplorer.com
●
http://www.blockchain.info
●
http://www.bitcoinmonitor.com
●
http://bitcoinstats.org
● ●
http://bitcoinstatus.rowit.co.uk http://bitcoin.sipa.be
burzy ●
http://mtgox.com
●
http://btc-e.com
●
http://www.bitstamp.net
mining ●
http://mining.bitcoin.cz
●
http://www.bitcash.cz
●
http://deepbit.net