Bitcoin

Bitcoin je první elektronická měna na světě a ikonický zástupce kryptoměn, resp. kryptoměnových kryptosítí, která spustila vývoj dalších distribuovaných systémů, zájem o nestátní peníze a úplně novou epochu lidstva. O Bitcoinu se bude vědět ještě za tisíc let a to, co odstartoval, bude trvat snad ještě déle.

Úvod

Proč vlastně chtít znát Bitcoin? Protože platební kryptografická síť je nejprimitivnější verzí obecné kryptosítě, která místo měnových transakcí zpracovává obecné transakce. Obecná transakce (někdy říkám pouze „transakce“ a že myslím obecnou, je jasné z kontextu) znamená, že se nejedná pouze o peníze – tj. přesouvají se i jiné hodnoty včetně vlastnických práv obsažených v dohodách mezi lidmi (tzn. ve smlouvách).

Dlouho jsem se rozhodoval, jestli nezačít Ethereem, druhou největší kryptoměnou na světě a zástupcem chytrých kontraktů, ale nakonec ne – je lepší, když uvidíte blockchain v konkrétnějším použití, než abych vám říkal, no, představte si chytrou smlouvu; chytrá smlouva může operovat téměř se vším, kde můžu spojit vlastnictví s počítačovým kódem atd.

Článek je trochu delší, takže ho čtěte po částech.

Opakování

Kdo se chystá číst tento článek, měl by být kamarád s pojmy jako blockchain, DLT, obecná transakce, rozhodovací aktivum, konsensuální mechanismus, důkaz práce (PoW – Proof of Work) apod. Takže teď jen pro zopakování:

  • DLT (Distributed Ledger Technology/ies) – technologie distribuovaných záznamů. Zastřešuje blockchain a ostatní architektury veřejných databází. DLT nemá centrální datové úložiště a komunikace mezi uzly sítě probíhá přímo (peer-to-peer). Smysl DLT je vyřešit problém byzantských generálů tvořící překážku lidstva i na to navazující vlastnická práva
  • Blockchain – konkrétní realizace DLT, kdy jsou obecné transakce ukládány do veřejné databáze ve formě vzájemně propojených bloků tvořících lineární řetězec (blockchain). Jde o kryptograficky zabezpečený „jedináčkovský“ stroj se sdíleným stavem, kde jedináčkovský znamená, že existuje jen jedna jednoznačně prezentovatelná „pravda“, jedna správná podoba sdíleného stavu (tzv. global state)
  • Veřejná databáze – systém, který v samé podstatě řeší problém distribuce veřejných šifrovacích klíčů elektronického podpisu (DLT je veřejná databáze)
  • Elektronický podpis – jednoduchý kryptografický model, kdy podoba podpisu závisí na tom, co podepisujete, tudíž se nikdo nemůže podepsat za vás. Jsou na něm založeny elementární objekty v DLT: účty alias adresy. Elektronický podpis je základním stavebním kamenem DLT plnícím autorizační a identifikační funkci.
  • Konsensuální mechanismus – způsob rozhodování o obsahu veřejné databáze DLT
  • Důkaz práce – jeden z rozhodovacích mechanismů
  • Těžení – proces hádání čísel (tzv. noncí) ve velkém
  • Rozhodovací aktivum – kritérium rozhodovacího mechanismu (v případě důkazu práce to je výpočetní výkon)
  • Obecná transakce – formálně dohoda potvrzená všemi zúčastněnými stranami. Odeslání zprávy v DLT je také transakcí, protože všechny zúčastněné strany (pouze odesílatel, který zprávu podepisuje) tuto primitivní dohodu potvrzují
  • Kryptosíť – jde o DLT, akorát tento pojem používám ve chvílích, kdy chci poukázat nikoliv na samotnou technologii, ale na její charakter distribuované sítě tvořené z uzlů.
  • Uzly sítě jsou klienti (tj. softwarový program) ovládaní uživateli, typicky osobní počítače a servery

Taky jsem si původně myslel, že si jen vyhledám, co nevím, a nemusím číst o věcech stojících za Bitcoinem – opak je ale pravdou, protože nepochopení vzniká většinou už na začátku a pak se nabaluje (hledáte odpovědi na otázky, které nedávají smysl). Tak vás žádám, opravdu čtěte až tehdy, kdy jste k tomu způsobilí. Připomínám, že na odkazované články navazovaly ještě úplně základní články – Jádro celého webu, absolutní nutnost.

Klidně se teď vykašlete na další pokračování v četbě tohoto článku a přečtěte si všechno, co ještě nevíte.

Kryptoměna

Bitcoinem můžete platit. To je hlavní. Bitcoin se těží a na těžení se může podílet kdokoli. Bitcoin nezastupuje fyzickou měnu. Je plně elektronický, tedy mobilnější než klasické peníze. Jeho počet je omezený. Je to vzácný zdroj. Sice se nějakým tempem uvolňuje, ale je ho dáno omezené množství. Po vytěžení 21. miliontého Bitcoinu už bude vytěžen celý, takže se jedná z dlouhodobého hlediska o mírně deflační měnu.

Bitcoin stojí na asymetrické kryptografii – jeho protokol zajišťuje, aby byly transakce vykonány správně a bez nutnosti důvěry v centrální autoritu.

Bitcoin je digitální. Normální peníze, kterými platíte, mají své papírové zástupce. Nejsou plně elektronické. A podléhají inflaci. Mezi bankami se přesouvají jen data o jejich množství, které je možné si pak fyzicky vyzvednout v bankomatu. Měna jako taková není softwarový kód, který by nesl hodnotu. Pořád jsou potřeba „ty zelené papírky“.

Digitální měna je jiná. Představte si, že můžete jakoukoliv věc na Zemi převést do zabezpečeného kódu, který ponese její hodnotu, který lze neuvěřitelně rychle posílat internetem na libovolné vzdálenosti a který nezabírá prakticky žádné fyzické místo. Obzvlášť poslední výhoda je často zcela opomíjena.

Přijdete, řeknete, prosím vás pěkně, chtěl bych 20 Bitcoinů za tohle auto, auto prodáte a máte protihodnotu v digitální podobě, tzn. právě jste provedli převod hmotného statku na digitální peníze! Disponujete majetkem dvaceti Bitcoinů (v únoru 2019 to je asi 2 mil. Kč) a nepotřebujete žádný kufr s penězi ani důvěru v banku. Jen heslo a internetové připojení. Bitcoin je neuvěřitelně likvidní a nevadí mu obrovské vzdálenosti.

Důvěra

Když vkládáte svoje peníze do banky na svůj účet, ze kterého potom platíte, tak té bance musíte věřit, že je doopravdy pošle tam, kam má, a že vám je neukradne. Zní to jako banalita, ale pojďme se na to podívat blíže.

Stát ovládá naše peníze. Pokud se rozhodne, že vytiskne víc peněz (ať proto, že si s nimi nevystačí, nebo z jakéhokoliv jiného důvodu), tak ty peníze, které vlastníte, ztratí část hodnoty, přesněji kupní síly. To je inflace, nafouknutí hodnoty. Číselně je v oběhu těch peněz víc, ale za jednu jejich jednotku si toho koupíte míň. Bohužel, inflace je v naší ekonomice naprosto běžný jev – Česká republika má dokonce stanovenou míru inflace.

Takže v otázce peněz musíte věřit našemu státu. Tedy – museli jste. Teď už je tady Bitcoin. V čem je ale ta největší nevýhoda státních peněz (tzv. fiat měny)? Překvapivě nikoliv v centralizaci. Je v donucení pod hrozbou násilí. Bitcoin v nejpřísnějším smyslu nepodléhá kontrole vůbec nikoho a je (také v nejpřísnějším smyslu) zcela svobodný.

Centralizace a kontrola

Jádro důvodu, proč tomu tak je, se nachází v podstatě samotné asymetrické kryptografie – silné heslo vítězí nad silou a násilím (nad „kontrolou“), jak píši v jednom ze základních článků Jádra. Státy mají monopol nad násilím, ale stejně nedokáží Bitcoin ovládat. Více se dozvíte v části Autonomní systém. I když je totiž nějaký systém centralizovanější, tak to nutně neznamená, že je pod něčí kontrolou (samozřejmě pokud není kontrola nad sítí přímo vbudována do jeho protokolu).

Centralizace peněz je praktická věc. Všichni platí na tomto území korunami a hotovo. Žádné neshody. Ale pokud aparát uchopí někdo, kdo to s námi nemyslí dobře, už to tak výborná myšlenka není. „Z pár míst hýbe všemi loutkami“. Je proto mnohem strategičtější, alespoň tu měnu, decentralizovat. Neodporuji si? Říkal jsem, že decentralizace není hlavní výhodou.

Ne. Centralizace a decentralizace totiž nejsou samy o sobě hlavními metrikami Bitcoinu. Důležitá je kryptografie, na které to všechno stojí, a hlavně elektronický podpis, který nelze zfalšovat ani ukradnout. Kryptografie Bitcoinu znemožňuje jeho ovládnutí silou (jakou státy nutí banky ke zmrazování určitých účtů a tak dále). Navíc, decentralizace úzce souvisí s počtem uživatelů sítě a určitá míra centralizace (i vysoká) nemusí být při správně nastavené motivační struktuře špatně. Těžaři Bitcoinu se totiž centralizují kolem tzv. těžebních poolů, aby byli při hledání noncí úspěšnější a výjimkou nejsou ani 40% giganti.

Decentralizace účetní knihy

Nyní se budu bavit o decentralizaci Bitcoinu jako systému, nikoliv o decentralizaci těžařů.

S Bitcoinem je to podobné jako s internetem, který vznikl původně jako vojenský program. Chtěli vytvořit nezničitelnou síť, a tak změnili postup. Předtím stačilo zbombardovat jeden bod, kde byla datová centrála, a padla celá síť. Potom centrálu roztrousili a měli vyhráno.

Uživatelé Bitcoinu však nemají vlastní lokální účetní knihu Bitcoinu jen kvůli tomu. Dalším velkým důvodem je totiž maximální svoboda takové z principu decentralizované sítě.

Nejde proto o nějakou šílenou anarchii a vzpouru státu (jak je Bitcoin často prezentován), ale o efektivnější peněžní systém. Bitcoin nesráží pracovní úsilí státní správy. Bitcoin je legální, legitimní a užitečný.

Distribuovanost = pouze rozdělení úkolu nebo procesů na menší části, decentralizace = to samé + rozhodnutí nevychází z centralizovaného bodu.

Regulován uživateli

Bitcoin je regulován všemi jeho uživateli. Žádná vláda nebo organizace nemá praktickou moc tento stav změnit, protože na ní není závislý. Všechny centralizované systémy (běžné státem vydávané peníze) jsou z principu méně bezpečné než ty decentralizované.

Paradox autority

Proč je centralizace nestrategická? Autorita, která ji provádí, není ničím zjištěna, pouhou důvěrou. V Blockchainu je důvěra vložena v matematiku a pobídkovou strukturu sítě, tedy nejedná se o slepou důvěru jako v případě důvěry v banku.

Jsou zde transakce, které je třeba bez spolehnutí na centrální autoritu ověřovat. Jak jednoduché to bylo u banky! Teď si ale představte, že máte platební síť, kde každý může udělat téměř cokoliv – vyslat vadnou transakci, ověřit vadnou transakci atd. A právě tehdy nastává skutečná výzva – jak správně nastavit pobídkovou strukturu uživatelů sítě, aby nikdo nepodváděl, příp. aby byl podvodník potrestán? Jak udělat, aby se všichni shodli na stejné podobě účetní knihy?

Ať autoritu vykonává kdokoliv, ve více lidech nebo v jednom, jde principiálně o diktaturu, protože nemáme nikoho, kdo by její kroky ovlivnil. Kontrolora kontroluje další kontrolor a tak dál, ale vždycky se to zastaví na člověku, kterého už nekontroluje nikdo. Je to tzv. paradox autority. Autorita zkrátka nemůže být efektivně kontrolována. Bitcoin autoritu nahrazuje matematikou.

I sebedemokratičtější způsob výběru členů kontroly znamená diktaturu jejích koncových článků. Je to způsobeno tím, že banka si prostě může s penězi udělat cokoliv. Jediná „jistota“ je právní systém státu, který však trpí obdobnou neduhou, protože se může (i když s varováním) téměř libovolně měnit.

Základní architektura

Veřejná účetní kniha

Představte si, že sedíte v hospodě a nevyměňujete si informace, ale peníze. Nechcete se však neustále vyrovnávat v hotovosti za každé jedno pivo, a tak začnete útraty psát do veřejné účetní knihy a podepisovat to digitálním podpisem.

Veřejnou účetní knihu ale nebudete mít na jednom centrálním místě v rukou jednoho člověka. Místo toho si každý povedeme vlastní lokální kopii účetní knihy. Aby to fungovalo, musí transakce zahrnovat také čas. Bez této informace by kdokoliv mohl zkopírovat libovolný řádek s transakcí, a bylo by mu úplně jedno, že nezná nějaký soukromý klíč.

Každý uzel (my, uživatelé v hospodě) si drží kopii účetní knihy a pro teď nám bude stačit pouze konstatování, že důvěra v tu správnou účetní knihu je postavena na důkazu práce výpočetním výkonem (PoW). Tím se ztrácí potřeba důvěry v centrální autoritu. Knihu máme všichni, není to napsané v jednom místě, kterému bychom museli věřit.

Teď odešleme do internetu elektronicky podepsanou transakci, která v řádech milisekund dorazí do všech částí sítě (na všechny uzly komunikující Bitcoin protokolem), které ověří její digitální podpis.

Protokol sítě funguje jenom mezi těmi uzly, které ho dodržují.

To je věta, která zní abstraktně, ale má obrovský význam pro skutečné pochopení decentralizace.

Pokud někdo pravidla hry (protokol Bitcoinu) změní ve svůj prospěch, ostatní uzly tuto změnu teoreticky mohou přijmout, tzn. rozštěpit uživatele protokolu. Tomu se říká hard fork. I když to přijme úzká skupinka uzlů, protokol funguje. Pouze ale mezi nimi. To je největší svoboda v přísném slova smyslu. Nedávalo by však smysl přijmout pravidlo, které by síť zničilo, např. možnost utratit víc, než mám.

Je intuitivní, že rozdělení protokolu, který se používá pro platby, by mělo negativní důsledky pro posílání prostředků mezi uživateli jedné a druhé strany, protože by si „nerozuměli“. Pracovně tomu říkám „dobrovolná demokracie“, protože původní protokol nezakazuje ty ostatní. Můžete se rozdělit jako rebel, ale k ničemu vám to nebude, pokud se s vámi „netrhne“ i někdo jiný. Takže jste svobodní, v nejpřísnějším smyslu slova. Nikdo vám přece ten Bitcoin nenutil.

Ztráta potřeby hotovosti

Účetní kniha v naší hospodě zatím znamenala, že se její účastníci na konci měsíce vyrovnají v hotovosti. Co kdyby ale nic takového neexistovalo? To by se muselo nějak zamezit utracení více peněz, než člověk má. Jak? Do společného protokolu Bitcoinu přidáme matematické pravidlo, že transakce, překračující rozpočet, nebudou validní. Až budu někdy příště mluvit o přidávání pravidel do účetní knihy, tak tím myslím shodu na používání stejného znění protokolu.

Ověření, zda nějaká transakce toto pravidlo (tzv. overspending) neporušuje, probíhá přes kompletní znalost historie transakcí.

Dluh

Je jednoduché zjistit pokus o falšování. Kdybych chtěl kamarádovi zaplatit víc, než mám, náš společný protokol veřejné účetní knihy by to nepovolil, tzn. nikdo z našich kamarádů by si transakci typu „někdo se zůstatkem 20 BTC zaplatil Fredovi 40 BTC“ nezapsal do své účetní knihy, protože by to zvýšilo množství BTC v naší síti, což by mělo za následek pokles kupní síly našich vlastních Bitcoinů. Prostě by nás to poškodilo, takže bychom to nepotvrzovali.

Není proto potřeba vkládat do kteréhokoliv dlužníka svou důvěru a pak se pokoušet prostředky vymáhat, protože k tomuto stavu nemůže dojít. Tím je zároveň eliminována potřeba nějaké vyšší autority, která by člověka, nedržícího slovo, musela donutit, k čemuž by potřebovala svrchovanou kontrolu nad sítí.

Kde je ta měna

Veškeré platby probíhají jen softwarově pomocí nul a jedniček, přičemž se množství našich prostředků stane pouhým číslem, které na základě pravidel Bitcoinového protokolu někdo ověřil a schválil. Já převod tohoto čísla elektronicky podepíšu, čímž legitimuji svůj souhlas. Není to geniální?

Bitcoin je vlastně jen digitálně podepsaný převod důkazu výpočetní práce. Takový převod znají všichni účastníci bitcoinové sítě a mají ho zanesený ve vlastní kopii transakční historie („veřejné“ účetní knize) – není to žádný tajný soubor uložený na disku. Je těžké si to představit, když to není na jednom místě, ale když je to takto distribuované u všech. Nepochopení většinou vznikne, když si síť omylem představíte centralizovanou, tj. Bitcoiny jsou uloženy na nějakém konkrétním místě. Vaše Bitcoiny jsou technicky vzato všude v síti.

Když proto řeknu, že mám v „peněžence“ uloženo 100 BTC, mám na mysli klienta – počítačový program připojený k internetu a komunikující Bitcoinovým protokolem. Ten zobrazuje historii mých transakcí zapsanou u všech v síti a dopočítává konečný stav. V pravém slova smyslu je peněženka veřejně distribuovaná (poskytovaná) adresa mého čísla, vyjadřujícího počet mých Bitcoinů.

V tuto chvíli už byste si to měli dost dobře představit. Při potvrzování bloku se prodlužuje blockchain. Kdo zná historii transakcí, tak ví, kolik prostředků je na které adrese. Bez ní není možné dopočítat a globálně ověřovat, že nikdo nepodvádí. Zároveň bez znalosti historie nemůžu říct, že vůbec nějaký Bitcoin vlastním – a právě tohle, znamená, že historie transakcí je samotná měna.

Historie transakcí je samotná měna.

Veřejná účetní kniha znamená, že každý má její kopii. Uživatelé se pak shodují na té pravé a vytváří platební síť, kde jsou účastníci motivováni vlastním prospěchem být co nejférovější.

Těžba

Většina lidí si pod těžením představí hledání nějakého specifického kódu v internetu, ale tak to není. Kód, který budeme při těžení hledat, nikde v internetu nevězí. Ono je to spíše takové hledání správného výsledku na příklady, které mají všichni stejně zadané.

Těžení je spíše takové hledání správného výsledku na příklady, které mají všichni stejné.

Těžaři slouží k ověřování finančních transakcí a k uvolňování nových Bitcoinů do oběhu. Na počátku to měli těžaři jednoduché, protože transakce neexistovaly (ještě nebyly vytěženy žádné Bitcoiny) a jediná data v bloku byla data povinné transakce pro „vytvoření Bitcoinu z ničeho“ – prvotní uvolnění (tzv. coinbase transakce). Stejně ale museli těžit. Nebojte, v tomto článku nebudu zavádět kompletní terminologii Bitcoinu, na to budou už specializovanější články.

Těžaři mezi sebou soutěží – kdo najde nonci rychleji, tomu náleží odměna za blok. Odměna za blok se po určitých intervalech půlí (tzv. halvuje). Prostřednictvím odměny za blok (nikoliv však transakčního poplatku) se do oběhu uvolňují nové Bitcoiny.

Těžba bloku transakcí probíhá principem hledání čísla (nonce), které když se přidá k transakčním datům, tak vyplivne z tzv. jednosměrné hashovací funkce číslo v určitém rozsahu. Pokud se těžař „trefil“, tak je tento hash nižší nebo stejný než aktuální target, cílové maximální číslo nepřímo udávající obtížnost. Takový blok je přijat a stává se součástí blockchainu.

K tomu, aby nonci těžař našel, musí provést neuvěřitelné množství pokusů a pravděpodobnost, že se „strefí na první dobrou“ je naprosto mizivá. To znamená, že vytvoření bloku (potvrzení všech transakcí, co jsou v něm) vyžaduje provedení určité výpočetní práce. Těžaři tedy hádají a používají k tomu výpočetní techniku. To je rozhodovací mechanismus záruky práce (Proof of Work, PoW).

Nějaké stroje se na výpočet hodí méně, nějaké více, a některé jsou specializované. Jak je target čím dál menší číslo (tzn. začíná větším počtem nul), je čím dál obtížnější nalézt žádanou nonci.

Obtížnost se na základě protokolu přizpůsobuje tak, aby vytěžit jeden transakční blok trvalo v průměru deset minut. Jeden blok má velikost 1 MB (což není množství transakcí, ale datový objem zašifrovaného textu transakcí). Protože se ale do jednoho bloku vejde jen určitý počet transakcí, funguje v Bitcoinu i systém dobrovolných poplatků, který vaši transakci prioritizuje. Poplatky jednou nahradí pobídku k těžení, protože až budou všechny Bitcoiny „vytěženy“, nebude se těžařům připisovat žádná odměna za vytěžení bloku.

Představte si, že většina uzlů v bitcoinové síti si určí číslo o velikosti 256 bitů (tzn. má 256 míst a na každém může být buď 0, nebo 1) – tzv. target. Blok s transakcemi bude sítí potvrzen jen tehdy, pokud jeho vrcholový hash, ke kterému přidám číslo (nonci) a hash předcházejícího bloku, bude menší nebo stejný než aktuální target.

Merkleovy hashové stromy a bloky

Hash je jednosměrná funkce a vytvoření otisku „na zakázku“ není prakticky možné udělat jinak, než zkoušet, která že to čísla musím funkcí prohnat, aby mi vygenerovala zrovna takový otisk.

Těžař udělá to, že vezme neověřenou transakci a udělá z ní otisk (resp. dvojitý otisk – double hash, otisk z otisku). Pak vezme další transakci a udělá to samé. A pak z těch dvou otisků-otisků udělá jeden otisk a tak dále. Vznikne určitý strom, tzv. Merkleův strom (nebo také hashovací strom) na počest svého objevitele.

Nakonec jsou transakce zahashovány na jedno číslo, tzv. Merkleův kořen (Merkle root) – vrcholu Merkleova stromu (vrcholový hash) Je patrné, že pokud je počet transakcí lichý, objeví se malá nepravidelnost – taková transakce se spojí sama se sebou a opět dvojnásobně zahashuje.

Zdroj: How Do You Get Money From Bitcoin

Výsledný kořen je součástí bloku. Blok je totiž datová struktura, takže má „řádky“, kam se něco píše. Dále je její součástí hash minulého bloku a speciální číslo, tzv. nonce, která se nijak nehashuje. Tyto tři základní prvky tvoří blok. Nakonec se také zahashují všechny tři a vznikne hash bloku, který poslouží zase u následujícího bloku.

Pokud tvořím následující blok, je jeho součástí i takový hash ze všech tří prvků předcházejícího bloku, takže všechny bloky jsou provázané. To bude důležité při pochopení bezpečnosti transakcí a odolnosti vůči útokům (pokusům zasáhnout do historie).

Změna targetu

Čím nižší číslo (tzn. čím více má target na svém začátku nul), tím obtížnější je najít zrovna tu nonci, která bude po zahashování spolu s otiskem posledního hashe bloku a vrcholu stromu aktuálních transakcí menší než target.

Bitcoinový protokol, který uživatelé používají, je naprogramován tak, aby v síti byla nalezena jedna nonce každých deset minut, tzn. block time, odstup mezi vytěžením dvou bloků, je deset minut. Jednou za deset minut jsou tedy potvrzeny nové transakce v jednom celém bloku. Obtížnost se přizpůsobuje výpočetní síle.

A přesně každých 2016 bloků každý bitcoinový klient (tj. program na připojení k Bitcoin síti) porovná aktuální čas, který byl potřeba k jejich vytěžení, s časem, jaký zabralo minulých 2016 bloků. O procentuální rozdíl se obtížnost většinou zvyšuje každé dva týdny, ale může se teoreticky i snížit. To znamená, že kdyby někdo na síť zaútočil a zlikvidoval významnou část těžařů, potvrzování transakcí a uvolňování dalších bloků bude pořád stejně rychlé.

Podle block time, času k vytvoření jednoho bloku, síť upravuje obtížnost, tj. nastavuje target tak, aby byly transakce potvrzeny každých deset minut. Dnes (2020) to vychází na zvýšení každé dva týdny, které odpovídají 2016 blokům.

S rostoucí výpočetní silou by byly nonce počítány rychleji a rychleji za vynaložení menší energie. Bez dynamického targetu by byly odměny transakce těženy rychleji a rychleji a „zásoba“ měny by s časem neúměrně rychleji klesala. Vynálezce/vynálezci Bitcoinu se shodli na tom, že je to nežádoucí efekt a že bude lepší, když bude nové oběživo přibývat stejnou rychlostí.

Podepisování transakcí

Digitální podpis je způsob, jak v bitcoinové síti stvrdit souhlas s provedením transakce. V Bitcoinu (stejně jako jsem psal ve článku o blockchainu) jsou totiž elementární objekty, účty, a k nim korespondující soukromé šifrovací klíče. Jedná se tedy o asymetrickou kryptografii.

Účet neboli adresa je odvozena od veřejného šifrovacího klíče. V praxi probíhá placení tak, že se z jedné adresy přepisují Bitcoiny na jinou adresu.

Jestli je transakce pravá, se ověří pomocí veřejného klíče, který je v páru (tzn. náleží jen jednomu unikátnímu) s klíčem soukromým, zprávy (tj. obsahu transakce – počtu převáděných BTC) a digitálního podpisu připojenému k transakci.

Historie transakcí

V blockchainu je vidět historie transakcí. Každý plnohodnotný uzel sítě, který naslouchá příchozím nepotvrzeným transakcím i všem větvím blockchainu, vidí historii kompletně (jde o tzv. full node). Full node musí mít tak logicky staženou kompletní historii plateb, tj. celý blockchain, aby měl plnou jistotu, že nebude podveden.

Dnes to jsou desítky gigabajtů dat, proto se rozšířily i tzv. light nody, které nestřadují celý blockchain, neuchovávají data o všech neutracených transakcích (více v Transakce) a nejsou maximálně bezpečné.

Zjišťování stavu bilance na adresách probíhá dopočítáním. Jedna z miskoncepcí Bitcoinového blockchainu je taková, že je v něm přímo vepsáno, kolik kdo má Bitcoinů – to ale není pravda.

Na Bitcoinovém blockchainu jsou uložené pouze transakce, tedy miniaturní příkazy ke změnám stavu.

Transakce

Zdroj:Bitcoin.org (developer section)

Transakce v Bitcoinu probíhá formou transakčního skriptu. Skript znamená miniaturní programový příkaz, který ověřují uzly sítě včetně těžařů. Skript má dvě části – instrukce (podmínky) pro utracení výstupu (Pubkey Script) Bitcoinové transakce od posledního odesílatele (TX1 Output) a místo pro digitální podpis transakce (Signature Script) uspokojené příslušným soukromým klíčem (Private Key).

Zjednodušeně, pokud dvojice elektronického podpisu soukromý klíč-veřejný klíč funguje jako účet, tak veřejný klíč je adresa, ke které se Bitcoiny připíšou a soukromý klíč heslo, které autorizuje přepsání ze stávající adresy na jinou adresu.

Každá transakce tak vytváří neutracený výstup, tj. Bitcoiny připsané (záměrně neříkám ležící na) adrese (veřejnému klíči) se utratí až tehdy, kdy někdo splní podmínky Pubkey Scriptu, tj. kdy někdo podepíše utrácející transakci soukromým klíčem k adrese neutraceného výstupu.

Zdroj: Bitcoin Stack Exchange

Veřejný klíč má funkci adres a podpis následující utrácecí transakce se proti němu ověřuje (Verify na obr.). Pole s názvem Hash si nevšímejte, protože nerozebíráme téma do technického detailu. A zase pořád dokola, výstup vzniklý utrácející transakcí je zase další vstup do následující utrácející transakce, která ani nemusí nikdy nadejít. Obecně říkáme, že je vstup zatížen nějakým utrácejícím skriptem, protože Bitcoin podporuje i transakce, které musí podepsat více lidí, aby byly platné a další různé typy.

Transakce vyslaná do sítě je pak dříve nebo později těžaři zahrnuta v některém z bloků, do té doby je neutracená a neověřená. Všimněte si, že nelze zjišťovat bilanci adres pouhým nahlédnutím do blockchainu – transakce totiž obsahují pouze změny stavů, neříkají, kolik Bitcoinů na které adrese ještě zbývá (vydedukování této informace, tj. informace o cashbacku není automatické). Proto musí každá transakce utratit všechny Bitcoiny na stávající adrese, i kdyby měla zbytek připsat na tu samou adresu, což se z bezpečnostního hlediska nedoporučuje.

Každá transakce utrácí všechny Bitcoiny z dané adresy (TX 0). Zdroj: Bitcoin.org (developer section)

Kdo kontroluje privátní klíč, tak dokáže manipulovat s prostředky na Bitcoinové adrese (vlastně na svém veřejném klíči), a to tak, že vytvoří k transakci podpis skládající se z jejího obsahu a ze soukromého klíče. Soukromý klíč nikdy nevstupuje na scénu holý. Princip je takový: pokud mi adresa patří, tak jsem si vygeneroval dvojici soukromého a veřejného klíče, a tudíž dokážu pomocí toho soukromého (který je s tím veřejným v kryptografickém vztahu) vytvořit platný podpis. Kryptografický důkaz vlastnictví znamená skrze vlastnictví určité informace – soukromého klíče.

Forky

Fork znamená v angličtině vidličku nebo větev, což je docela přesné. Forkovat blockchain znamená udělat výjimku od hlavního řetězce. Může jí způsobit neuznaná transakce (z hlediska uživatelů – nikoliv z hlediska protokolu, např. transakce rozsáhlého rozkrytého podvodu) nebo změna protokolových pravidel.

Říkal jsem, že jakkoliv malá síť je přece jen síť. Ve chvíli, kdy bych někomu udělal iluzi, že ode mně obdržel např. 50 BTC, tak bych vytvořil vlastně novou odnož/větev původního řetězce historie všech plateb. Podvedený by nevěděl, který je ten pravý, dokud by nepřišly další bloky. Kdyby se ale našlo více lidí, kteří by začali tento řetěz respektovat bez ohledu na to, že jeho první blok obsahuje jiné transakce, než které pochytil zbytek sítě (konkrétně: „já mám o 50 BTC méně“), vnikla by plnohodnotná odnož, tzv. fork.

Rozdělení blockchainu na dvě respektované větve má různé dopady. V historii Bitcoinu se to už stalo dne 1. srpna 2017, kdy vznikl Bitcoin Cash. Nejčastěji to bývá kvůli potřebě změnit, vylepšit nebo zmodernizovat pravidla protokolu. Mince z odnože s novými pravidly protokolu totiž logicky nemůže být přijata tou částí sítě, která respektuje protokol původní, resp. může, ale ne v rámci stejného blockchainu. To je hard fork.

Rozdělení blockchainu prakticky probíhá tak, že má část sítě připraveného nového síťového klienta fungujícího s novým protokolem (plánovaný fork). Jakmile se odštěpí první blok, může začít nová měna už fungovat, protože jsou všichni, kterých se to týká, připraveni.

Hard fork je prakticky něco jako softwarové vylepšení, které není kompatibilní se staršími verzemi. Uživatelé s neupgradovanými klienty se nemůžou podílet na síti ani ověřovat transakce (a z jejich hlediska jsou nové bloky invalidní). Kdyby se o to pokusili, jejich bloky (a bloky všech neupgradovaných klientů) by byly zavrženy. Kým? Přece klienty novými, kteří uznali nové vylepšení za přínosné.

Ne všechno ale musí nutně jít tou tvrdší cestou. Soft fork je vylepšení zpětně kompatibilní se staršími verzemi protokolu. Neupgradovaní uživatelé vidí nové bloky jako validní, jako správné v souladu s protokolovými pravidly. Ale nemohou např. ověřovat transakce.

Pro ukázku, změna velikosti bloku netvrdí, že minulé větší transakce neplatí, ale že odteď budou do blockchainu zapsány jen ty bloky o menší velikosti. Soft fork je tak nenásilný a pozvolný způsob, jak účastníky sítě donutit k upgradu softwaru kvůli omezené funkčnosti.

Autonomní platební systém

Řád v chaosu? Umíte si představit, jak může fungovat něco, kde jsou pravidla hry v rukou úplně všech hráčů (zejména při používání stejného protokolu, na němž Bitcoin běží)? Asi ne. Máte nutkání se ptát, kdo zaručí, že po prokázání podpisu se Bitcoiny skutečně a dle programu převedou na jinou adresu, resp. jak je možné, že v síti, kde je všechno de facto dobrovolné, vůbec něco funguje? Asi ano.

S placením v Bitcoinu se věc má tak, že ostatní uzly používají stejný protokol, který respektuje mechanismus na placení a uzná převod prostředků. Ale celý proces nezávisí pouze a čistě na nějakém uznávání, aby to fungovalo.

Ukázkou budiž fakt, že vlastnictví adresy lze naprosto jednoznačně a matematicky dokázat bez použití lidského faktoru. Když zkrátka neuznávám, že vám adresa patří, tak z ní peníze stejně neukradnu (přesněji řečeno mohl bych si je připsat a vám dát nulu, ale matematický důkaz by tvrdil něco jiného), protože neznám soukromý klíč a protože ani nemám šanci ho někde na síti zachytit. Ten přece nikdy nepřijde se sítí do kontaktu.

Bitcoin mi jednoznačně řekne, že bych si měl do lokální účetní knihy napsat, že např. Alice poslala Bobovi 1 BTC, i když je samozřejmě na mě, jestli si to tak napíšu. Důkaz je nevyvratitelný, rozhodnutí v podstatě dobrovolné. Podobně je to s těžením.

Důkaz je nevyvratitelný, rozhodnutí v podstatě dobrovolné.

A to je vlastně odpověď na otázku, jak může fungovat něco, kde jsou pravidla de facto v rukou všech hráčů – prostě se nadefinují tak, aby jejich porušení nebo následování bylo průkazné, resp. naprosto jednoznačné (to je tzv. law-in-code – právo v počítačovém kódu).

Ale co důvěra ve třetí stranu?

Když říkám, že v rukou všech hráčů, stejně nemám na mysli, že by víra, která rozhodne o osudu vašeho majetku nebo digitálních mincí, byla pouze distribuována a vy tedy museli věřit jakési „distribuované autoritě“.

Jak jsem řekl v článku o DLT a chytrých smlouvách, vaše Bitcoiny principiálně nemůže nikdo ukrást, dokud nemá soukromý klíč, a to platí i v případě, že vlastní většinu rozhodovacího aktiva. Důvěra v „distribuovanou třetí stranu“ je „jen“ do smyslu problému naprostého zveřejnění – samotná podoba záznamů nikdy na ostatních uživatelích nezávisí.

Dohled nad chybami

Když síť závisí na lidech, tak jak můžu mít jistotu, že neodsouhlasili nějakou chybu?

Vše de facto opravdu záleží pouze na účastnících sítě. Kryptografie nikomu nezaručuje, že se všechny uzly budou chovat podle protokolu a měnit svou lokální verzi účetní knihy (bilanci) vždy, když někdo prokáže vlastnictví adresy. Kryptografie je jen nástroj, jak určit naprosto jednoznačná pravidla protokolu. Sama o sobě nedokáže lidi přimět, aby se jimi řídili. To musím dát do citátu:

Kryptografie nikomu nezaručuje, že se všechny uzly budou chovat podle protokolu a měnit svou lokální verzi účetní knihy (bilanci) vždy, když někdo prokáže vlastnictví adresy. Kryptografie je jen nástroj, jak určit naprosto jednoznačná pravidla protokolu. Sama o sobě nedokáže lidi přimět, aby se jimi řídili.

A to je vlastně důvod, proč kryptografie sama o sobě nestačí a je třeba ji jako vědu kombinovat s ekonomií, teorií her apod.

Bitcoinový Blockchain funguje tak, že se může libovolně forkovat. Pokud váš bitcoinový klient poslouchá všechny nepotvrzené příchozí transakce, tak chybu zpozorujete (tj. např. většina uživatelů zařadí do bloku chybně podepsanou transakci). Záleží samozřejmě, jak silná je ta většina.

Pokud se většina sítě rozhodne transakci přehlédnout a vy ne, pravděpodobně nepořídíte. V tomto smyslu může Bitcoin záležet na důvěře v ostatní uživatele.

Stejně se to dá obelstít, ne?

Stejně to celé nechápu. Vždyť data, co přijme váš počítač, se dají všechna zfalšovat.

Když máte pomocí klienta pod kontrolou plnění podmínek protokolu od transakcí až po bloky, musíte chybu vidět. A co když nevidíte to, co se na síti doopravdy děje, ale někdo vás klame? No, existuje něco jako záruka práce a princip bitcoinové adresy přece.

Nezcizitelné

S adresou vysíláte i mechanismus na autorizaci přístupu do ní a útočník tyto dvě funkce nemůže za žádných okolností separovat. Nemá smysl bránit v „odvysílání založení nové adresy“ do sítě nebo vysílaná data měnit, protože v obou případech útočník peníze stejně nezcizí.

Proč? Protože adresa je zároveň velmi zjednodušeně řečeno i veřejný klíč asymetrické kryptografie, který ověří elektronický podpis potřebný k manipulaci s prostředky. Geniální – s adresou vysíláte i mechanismus na autorizaci přístupu do ní a útočník tyto dvě funkce nemůže za žádných okolností separovat. To byl princip bitcoinové adresy.

Hodnota

Jak může mít hodnotu něco, co je kompletně veřejné a udržované všemi uživateli? Cena nebo hodnota je subjektivní záležitost. Má ale Bitcoin vůbec nějakou faktickou hodnotu? Spousta lidí tvrdí, že je to jen pálení elektřiny.

Hodnota Bitcoinu je v tom, že efektivně překonává problém dvou generálů. Pokud nechcete svou důvěru vkládat v lidi a v bankovní instituce, pak pro vás má Bitcoin hodnotu. Jádro jeho hodnoty však tkví v omezeném zdroji – Bitcoinů je jen 21 milionů.

Ve chvíli, kdy provedu výpočetní práci a někdo ji uzná tím, že ode mě Bitcoin přijme, roste v něj důvěra jako v měnu. Cena Bitcoinu totiž plně nezávisí na ceně spálené elektřiny.

Pokud se Bitcoin forkuje, máte k jedné adrese mince v obou blockchainech. Hodnota se však nezdvojila. A zde je krásně vidět prvek uznání hodnoty – ona se totiž zdvojit může. I peníze mají přece svou cenu – a peníze, které jsou chytřejší než ty staré (tj. forknutý blockchain), mají přece vyšší hodnotu.

I peníze mají svou hodnotu.

Jakýkoliv fork ve smyslu změny výše odměny za vytěžení bloku nebo celkového počtu Bitcoinů by se okamžitě odrazil v ceně Bitcoinu.

Docela jiný druh placení

Obecně

V této podkapitole si shrneme elementární odlišnosti mezi Bitcoinem a fiatem.

Bitcoin je naprosto jiný než fiat peníze. Pokud je Bitcoin digitální, tak se jeho transakční historie stává samotnou měnou ve smyslu, že nikde neevidujeme žádná množství zelených papírků a že je vše plně elektronické.

Účet se u Bitcoinu „otevírá“ vygenerováním soukromého a veřejného účtu, kam si necháte poslat Bitcoiny. To má dva důsledky – zaprvé, máte nad účtem plnou kontrolu, ale zadruhé, pokud zapomenete soukromý klíč, tak Bitcoin nebude tak hodný jako vaše banka, aby vám ho resetoval – máte zkrátka smůlu (a vaše Bitcoiny jsou prakticky nadobro ztraceny). To je cena za svobodu.

Bitcoin nejsou mince schované někde v internetu jako zlato po různých místech na zemi. „Najít Bitcoin“ znamená najít jako první nonci následujícího transakčního bloku a mít za to od coinbase transakce přičtenou odměnu za vytěžení plus poplatky za ověření transakcí v bloku.

Bitcoin může těžit kdokoliv a kdekoliv. Zlato takovou svobodu nemá, protože se nachází jen na určitých místech na zemi.

Bitcoin se neuchovává „u vás“ jako u uživatele. Stav vaší Bitcoinové adresy u sebe mají zapsaný všechny uzly sítě, takže je prakticky u všech a u nikoho. Jediné, co vy jako uživatel uchováváte, je adresa (vaší peněženky) a soukromý šifrovací klíč.

Pokud vás někdo chce podvést, musí předhonit hlavní řetězec bloků (resp. přepočítat), protože jeho podvodná změna v jedné z transakcí díky Merkleovu hashovému stromu a provázanosti bloků způsobila velkou odlišnost a protože nejdelší řetězec (a nímž stojí nejvíce výpočetní práce) je považován dle protokolu za správný stav. Podvodník může prohazovat pořadí transakcí (zjednodušeně), ale nikdy za vás nedokáže podepsat cizí transakci.

Předhonění je astronomicky náročné a drahé. Proto pokud počkáte, až se blok s vaší transakcí dostane dostatečně hluboko do blockchainu (standartně 6 bloků), šance na přepočítání a předhonění jsou mizivé. V praxi se bohužel s fyzickou výměnou zboží za Bitcoiny musí čekat, než se transakce dostane do takové hloubky. Pokud by vás někdo i přesto podvedl, pravděpodobně po pár blocích falešnou větev opustí a nebude na ní dopočítávat další bloky.

Jako příjemce Bitcoinů jen sledujete pomocí počítačového klienta pro plnohodnotný síťový uzel, jak hluboko je vaše transakce. Jako odesílatel pouze podepisujete transakce, což za vás dělá v nejlepším případě zařízení odpojené od internetu (kvůli bezpečnosti). Tuto funkci plní tzv. hardwarové peněženky, které uloženým soukromým klíčem vygenerují podpis transakce a nahrají ho do vašeho počítače.

Bitcoin není principiálně anonymní, protože je každá úspěšná transakce viditelná na blockchainu.

Co dělat, když přijímám Bitcoiny

Pokud tedy přijímáte Bitcoiny, nemusíte dělat vůbec nic – jen sledovat blockchain, až se v něm objeví blok a v něm transakce s vaší adresou.

Role těžařů v transakcích

Podmínky pro utracení transakce ověřují těžaři, kteří následují bitcoinový protokol a vědí, že platná je jen ta transakce, u níž soukromý a veřejný klíč je v páru. Pokud přijde upgrade protokolu, ať od tzv. Segregated Witness (SEGWIT – vymoženost pro aktualizaci protokolu bez nutnosti rozdělovat blockchain, tj. tvořit hard fork) nebo od vývojářů Bitcoin Core (univerzální klient Bitcoinového protokolu), znamená to, že těžaři mají nové instrukce, podle nichž ověřovat platnost transakcí.

Historie

Genesis blok

Všechno dobré. Co ale úplně první blok? Kde se vzal, jak vypadal… Ten vznikl 3. 1. 2009. Mimo běžné parametry je v něm ukryta zpráva, která zní následovně:

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

To dodává příběhu naprosto anonymního vynálezce Bitcoinu pana Satoshiho Nakamoty ještě neuvěřitelnější mystický ráz. „Kancléř na pokraji druhé výpomoci pro banky.“

To je narážka na bankovnictví částečných reserv, kdy zjednodušeně řečeno dá centrální banka ostatním bankám za každý dolar, vložený od klienta, dalších deset, které může půjčit. Rezerva je v tomto případě jeden dolar – tolik musí banka mít, aby mohla půjčit desetinásobek.

Pokud se něco pokazí, třeba hodně lidí si bude v ten samý den chtít vybrat všechny své peníze (tzv. ran na banku), systém částečných rezerv zkolabuje a centrální banka je nucena podstoupit tzv. morální hazard – některým bankám vytiskne nové peníze, aby pokryla poškozené klienty (a tím způsobí masivní znehodnocení měny), a některým ne, přičemž objektivita výběru je značně pochybná (ne-li nemožná). Tento systém používají aktuálně všechny legální banky na světě (!).

Zásadní problém však není u ranu na banku, ale u ekonomických dopadů takto chytře vyrobených nových peněz. Díky nim totiž vzniká hospodářský cyklus – s železnou pravidelností se opakující krize a boomy. Peníze jsou sice „půjčené“, ale za podtržní cenu, tudíž kvůli tomu dělají podnikatelé chybná rozhodnutí a jejich nápady zkolabují.

Genesis blok neodkazuje na žádný předchozí blok, to znamená, že jeho otisk je natvrdo vepsaný do bitcoinového klienta, resp. všichni ho prostě mají ve své účetní knize (blockchainu), takže platí. Odměnu za jeho vytěžení, která náleží genesis adrese, ale nemůže nikdy nikdo utratit. Je to kvůli určité zvláštnosti, kterou si za chvíli vysvětlíme.

Na začátku Bitcoinu totiž zanesl pan Satoshi do všech svých veřejných účetních knih (public ledgerů) blok, který obsahoval otisk předcházejícího bloku, co nikdy neexistoval (otisk si vymyslel).

Tento Genesis blok byl zapsán do všech public ledgerů bez ohledu na vymyšlený otisk, protože jinak by nešlo vůbec začít. Odměna za vytěžení ale podle všeho putovala na adresu (do peněženky), kterou Satoshi nezanesl do transakční databáze počátečních uzlů. Tedy do žádného bloku. Tuto platbu proto všichni současní peněženkoví klienti (programy pro přístup k Bitcoinům) nemohou uznat. Pokud by se někdo pokusil těch 50 BTC utratit, bitcoinové uzly to odmítnou, protože tato adresa s tímto zůstatkem u nich neexistuje.

Satoshiho počáteční mini Bitcoinová síť totiž ještě nebyla přístupná internetové veřejnosti a on nechtěl být vystaven pokušení si Bitcoiny předtěžit, protože by tím podryl jejich důvěryhodnost (jelikož nemohl těžit nikdo jiný). Jinak dál těžení probíhalo zcela normálně – lidé si na počítačích zapnuli klienta s totožným protokolem a mohli hledat nonce. Akorát konkurence byla asi milionkrát menší než dnes. Naprosto minimální počet uzlů, na kterém Bitcoin běžel, byl dva. Dva počítače, komunikující stejným způsobem. Když jeden našel nonci dřív než druhý, tak si oba k jeho adrese připsali Bitcoiny.

Satoshi Nakamoto

Satoshi Nakamoto je jméno nebo pseudonym osoby nebo skupiny, která navrhla a vytvořila protokol pro Bitcoin a potřebný software. V roce 2008 na e-mailové konferenci metzdowd.com zveřejnil Satoshi popis digitální měny Bitcoin. Roku 2009 vydal první software, který zahájil provoz celé sítě a těžbu prvních jednotek Bitcoin měny. Jeho skutečná identita není dosud známa.

Nakamoto dále přispíval do dalších verzí Bitcoin softwaru společně s ostatními vývojáři, dokud se v polovině roku 2010 postupně nevytratil jeho kontakt s vývojářským týmem a celou komunitou. Zhruba v této době předal kontrolu nad úložištěm zdrojového kódu a klíčových funkcí softwaru Gavinu Andresenovi. Doménu Bitcoin.org a několik dalších domén předal do rukou předních členů komunity Bitcoinu.

Podle domněnek by Nakamoto mohl mít ve vlastnictví zhruba jeden milion Bitcoinů (zhruba 5 % veškeré zásoby). V prosinci roku 2017 by to odpovídalo asi 19 miliardám dolarů (asi 390 miliard Kč).

Satoshi je mužské japonské jméno, jehož význam má různé podoby jako „moudrý“, „jasné myšlení“, „bystrý“, nebo „osoba s inteligentními předky“.

Na svém profilu u nadace P2P Foundation Nakamoto tvrdil, že je jeden muž ve věku 37 let s japonskými kořeny. To ale podnítilo řadu pochybností, protože používá jako jazyk angličtinu a software pro Bitcoin nebyl zdokumentován ani vydán v japonštině.

Spekuluje se, že první vydání jeho původního Bitcoinového softwaru je dílo skupiny spolupracovníků, což někoho vede k názoru, že Satoshi Nakamoto byl kolektivní pseudonym skupiny lidí.

Jak v komentářích zdrojového kódu, tak v příspěvcích na fórech používá britskou angličtinu. To naznačuje, že alespoň jedna osoba ze sdružení vydávající se za něj by měla mít původ ze zemí Commonwealthu. Jeden z jeho příspěvků obsahuje anglický výraz „Bloody hard“. „Bloody“ je slovo používané pro klení ve Velké Británii, Irsku, Jižní Africe, Austrálii, na Novém Zélandu a těmi, kteří mluví indickou angličtinou. Nicméně je málokdy slyšet v Severní Americe mimo Newfoundland a Labrador.

Stefan Thomas, švýcarský kodér a aktivní člen komunity, vytvořil graf s časy příspěvků od Nakamota na bitcoinovém fóru (více než 500 příspěvků). Výsledek ukázal prudký pokles aktivity, až na téměř žádné příspěvky, mezi 5. a 11. hodinou Greenwichského středního času. Pokud je Nakamoto jedinec s běžnými zvyky spaní, měl by se nacházet v časovém pásmu UTC−05:00 nebo UTC−06:00. To odpovídá východní části severní Ameriky, části Střední Ameriky, Karibiku a Jižní Ameriky. Mohl to za něj však zveřejňovat někdo jiný nebo si mohl zveřejnění naplánovat.

Satoshi Nakamoto je neoddělitelná mystérie plující za Bitcoinem.

Problémy

Strukturální omezení

Pokud se mi transakční bloky uvolňují s předem danými intervaly (síť je synchronní) a mají předem danou velikost, pak je už z podstaty jasné, že bude docházet k „ucpávání sítě“. Do bloku se vejde jen určité množství transakcí. Pokud velikost bloku zvětšíme, budou muset mít uzly sítě poslouchající příchozí bloky větší šířku datového pásma, a tak se může stát, že jednoho dne budou stíhat jen ti nejvýkonnější a síť se ukrutně a nevyhnutelně zcentralizuje.

Je to důsledek decentralizované filozofie „všechno u všech“, která se sama o sobě jeví v určité fázi jako vysoce neefektivní. Řešením bude pravděpodobně sharding, ale o tom někdy příště. Zatím má Bitcoin tzv. second layer řešení, což znamená provádět časté, stejné nebo malé transakce mimo hlavní řetězec a místo toho si pouze vyměňovat jakési „elektronické šeky“.

Bitcoinový blockchain by pak fungoval pouze jako konečná distance pro řešení neshod, kdy by na něj jedna ze stran vyslala konečný šek. Jde o poměrně sofistikované a zábavné řešení, na které zde také vyjde článek, ale které stále neřeší jádro problému.

Rostoucí poplatky

Poplatky za ověření transakce rostou v důsledku prvního problému. Navíc se pravidelně halvuje odměna za vytěžený blok, takže těžaři stále více a více ekonomicky závisejí právě na poplatcích. Pro odesílání menších částek dokonce nemá Bitcoin smysl.

Kypící databáze

Dalším problémem je kypící uložený blockchain. Pokud chcete mít maximální bezpečnost, musíte mít full node klienta, který má u sebe nahraný celý blockchain. Useknout blockchain od určitého bodu je možné, akorát to trochu porušuje filozofii „transakční historie je samotná měna“. Takové rozhodnutí je navíc zcela arbitrární. Právě dopočitatelnost všech stavů od úplného začátku je na Bitcoinu to krásné.

Energická efektivita

Jak jsem napsal v jednom z minulých článků, PoW mechanismus není jediné možné řešení konsensu. Počítání noncí navíc nějakou dobu trvá, ale přitom ho lze eliminovat a zavést jiný konsensuální mechanismus (např. proof of stake, PoS, záruka vkladu), který o dalším bloku rozhodne okamžitě a se srovnatelnou bezpečností.

Shrnutí

Bitcoin je digitální měna, díky níž můžeme téměř jakoukoliv hodnotu převést do elektronického stavu, nevyžadujícího žádný fyzický prostor. Počet Bitcoinů je omezený, a proto je efektivní neinflační měnou. Bitcoin nevyžaduje centrální autoritu a je v plné kontrole svých uživatelů a matematiky. Bitcoin jako síť si představte jako internet v internetu. U Bitcoinu nepotřebujete lidskou důvěru v ostatní lidi, protože je jištěn kryptograficky.

Slovník

Transakce

Coinbase transakce – transakce uvnitř těženého bloku, která přidává těžaři odměnu za vytěžení (v případě nalezení správné nonce)

Nonce – číslo, které se přidává k bloku (hádá) tak dlouho, až je jejich otisk v rozsahu targetu

Target – největší číslo nonce, která je považována za správnou

Merkle tree – stromová struktura zahashovaných transakcí

Merkle root – vrcholový hash Merkle tree

Halving – pravidelné půlení odměny pro těžaře

Block time – čas vytěžení jednoho bloku

Adresa – upravený veřejný kryptografický klíč

TX – zkratka pro bitcoinovou transakci

UTXO – zkratka pro neutracenou transakci

SkriptSig – skript, který „uspokojuje utrácecí podmínky transakce

PubkeyScript – skript, který klade podmínky pro utracení transakce

TXID – zkratka pro transakční vstup (předcházející neutracená transakce)

Kryptografická síť

Fork – přidání nekompatibilního bloku do řetězce a jeho rozdělení

Bitcoinový klient – program pro provoz full nodu

Full node – plnohodnotný uzel sítě poslouchající všechny transakce a všechny bloky

Light node – odlehčený uzel sítě (typicky mobilní zařízení)

Public ledger/ledger – veřejná účetní kniha (označení pro veřejnou databázi plnící funkci kryptoměny)

Gossip protokol – protokol pro rychlé šíření informace např. o nalezení nonce mezi všemi uzly sítě

Highlighty

U tohoto příspěvku jsem se rozhodl zvýrazněné pasáže uvést až nakonec.

V čem je ale ta největší nevýhoda státních peněz (tzv. fiat měny)? Překvapivě nikoliv v centralizaci. Je v donucení pod hrozbou násilí.

I když je totiž nějaký systém centralizovanější, tak to nutně neznamená, že je pod něčí kontrolou (samozřejmě pokud není kontrola nad sítí přímo vbudována do jeho protokolu).

Centralizace a decentralizace nejsou samy o sobě hlavními metrikami Bitcoinu. Důležitá je kryptografie, na které to všechno stojí, a hlavně elektronický podpis, který nelze zfalšovat ani ukradnout. Kryptografie Bitcoinu znemožňuje jeho ovládnutí silou.

A právě tehdy nastává skutečná výzva – jak správně nastavit pobídkovou strukturu uživatelů sítě, aby nikdo nepodváděl, příp. aby byl podvodník potrestán? Jak udělat, aby se všichni shodli na stejné podobě účetní knihy?

Protokol sítě funguje jenom mezi těmi uzly, které ho dodržují.

Bitcoin je vlastně jen digitálně podepsaný převod důkazu výpočetní práce.

Bez znalosti historie nemůžu říct, že vůbec nějaký Bitcoin vlastním – a právě tohle, znamená, že historie transakcí je samotná měna.

Těžení je spíše takové hledání správného výsledku na příklady, které mají všichni stejné.

Transakční blok je datová struktura.

Účet neboli adresa je odvozena od veřejného šifrovacího klíče. V praxi probíhá placení tak, že se z jedné adresy přepisují Bitcoiny na jinou adresu.

Zjišťování stavu bilance na adresách probíhá dopočítáním. Jedna z miskoncepcí Bitcoinového blockchainu je taková, že je v něm přímo vepsáno, kolik kdo má Bitcoinů – to ale není pravda.

Na Bitcoinovém blockchainu jsou uložené pouze transakce, tedy miniaturní příkazy ke změnám stavu.

S placením v Bitcoinu se věc má tak, že ostatní uzly používají stejný protokol, který respektuje mechanismus na placení a uzná převod prostředků. Ale celý proces nezávisí pouze a čistě na nějakém uznávání, aby to fungovalo. Ukázkou budiž fakt, že vlastnictví adresy lze naprosto jednoznačně a matematicky dokázat bez použití lidského faktoru. Když zkrátka neuznávám, že vám adresa patří, tak z ní peníze stejně neukradnu (přesněji řečeno mohl bych si je připsat a vám dát nulu, ale matematický důkaz by tvrdil něco jiného), protože neznám soukromý klíč a protože ani nemám šanci ho někde na síti zachytit. Ten přece nikdy nepřijde se sítí do kontaktu.

Bitcoin mi jednoznačně řekne, že bych si měl do lokální účetní knihy napsat, že např. Alice poslala Bobovi 1 BTC, i když je samozřejmě na mě, jestli si to tak napíšu. Důkaz je nevyvratitelný, rozhodnutí v podstatě dobrovolné. Podobně je to s těžením. Kryptografie nikomu nezaručuje, že se všechny uzly budou chovat podle protokolu a měnit svou lokální verzi účetní knihy (bilanci) vždy, když někdo prokáže vlastnictví adresy. Kryptografie je jen nástroj, jak určit naprosto jednoznačná pravidla protokolu. Sama o sobě nedokáže lidi přimět, aby se jimi řídili. A to je vlastně důvod, proč kryptografie sama o sobě nestačí a je třeba ji jako vědu kombinovat s ekonomií, teorií her apod.

S adresou vysíláte i mechanismus na autorizaci přístupu do ní a útočník tyto dvě funkce nemůže za žádných okolností separovat. Nemá smysl bránit v „odvysílání založení nové adresy“ do sítě nebo vysílaná data měnit, protože v obou případech útočník peníze stejně neukradne. Proč? Protože adresa je zároveň velmi zjednodušeně řečeno i veřejný klíč asymetrické kryptografie, který ověří elektronický podpis potřebný k manipulaci s prostředky. Geniální – s adresou vysíláte i mechanismus na autorizaci přístupu do ní a útočník tyto dvě funkce nemůže za žádných okolností separovat. To byl princip bitcoinové adresy.

Peníze, které jsou chytřejší než ty staré, mají vyšší hodnotu.

Bitcoin může těžit kdokoliv a kdekoliv. Zlato takovou svobodu nemá, protože se nachází jen na určitých místech na zemi.

Zdroje

Wikipedia – transakce a transakční skripty

ANTONOPOULOS, Andreas M. Mastering bitcoin: programming the open blockchain. Second edition. Beijing: O’Reilly, 2017. ISBN 978-149-1954-386. – učebnice Bitcoinu od světoznámého učitele

Wikipedia – spekulace nad Satoshim Nakamotem

Bloco1 – obrázek v náhledu

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..