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 = 10 8 satoshi)
deterministická inflace 10 / 26
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 bylo by nutné přegenerovat celý kus historie různí obchodníci požadují různou hloubku 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 (zjednodušeně) 16 / 26 odesílatel transakce prokazuje vlastnictví dosud nepoužitého vstupu (držení klíčů) podepsáním něčeho pomocí soukromého klíče odesílatel určuje příjemce výstupu 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 (skutečnost) 17 / 26 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: 20 / 26 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)...
dodatek A: 21 / 26 aplikace (2) Bitcoin-Qt
dodatek B: 22 / 26 mining, pools 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: 23 / 26 útoky Race attack při akceptování hloubky 0 Brute force attack 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: 24 / 26 výpočetní síla v čase
dodatek E: 25 / 26 další implementace 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 http://bitcoin.org http://bitcoin.org/bitcoin.pdf http://bitcointalk.org/ 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 trhy http://bitcoinity.org/markets/ http://www.bitcoincharts.com http://www.bitcoinwatch.com burzy http://mtgox.com http://btc-e.com http://www.bitstamp.net mining http://mining.bitcoin.cz http://www.bitcash.cz http://deepbit.net