Vítejte na stránce supportmaker.wbs.cz v sekci Blockchain
Blockchain je v informatice speciální druh distribuované decentralizované databáze uchovávající neustále se rozšiřující počet záznamů, které jsou chráněny proti neoprávněnému zásahu jak z vnější strany, tak i ze strany samotných uzlů peer-to-peer sítě. Nejčastější aplikací technologie blockchainu je použití jako účetní kniha kryptoměn (např. bitcoinu), jež uchovává transakce provedené uživateli. Kombinace s kryptografií umožňuje zajistit anonymitu operací a zamezit neoprávněné transakce.
Jednoslovný český ekvivalent pro anglický termín „blockchain“ dlouho chyběl. Od začátku roku 2017 běžel na stránkách https://www.blockchain.cz projekt, který si kladl za cíl takové slovo vybrat. Nakonec bylo vybráno slovo "bločenka". Pracovní návrhy obsahovaly mj. slova blokčejn, bloksíť, bloknet apod
Hlavní výhody
Mezi hlavní výhody blockchainu patří:
- Schopnost velkého počtu uzlů dospět k jednomu konsenzu ohledně nejaktuálnějšího stavu velkého množství dat, například záznamů v účetní knize. To platí i v případě, kdy jsou jednotlivé uzly anonymní, připojeny přes nespolehlivé spojení jeden k druhému, či vedeny podvodníky, kteří se snaží transakce upravovat ve svůj prospěch.
- Schopnost kteréhokoliv uzlu rozhodnout se s přijatelnou mírou jistoty, že zadaná transakce do blockchainu spadá či nikoliv.
- Schopnost libovolného uzlu, jenž vytvořil či přijímá transakci, po nějaké době rozhodnout s ucházející mírou jistoty, zda je transakce validní a začlenitelná do blockchainu natrvalo a zda nedošlo ke kolizi dvou transakcí. To je důležité k řešení problému double-spendigu (dvojutrácení).
- Dostatečně velká překážka, která brání útočníkům v úpravách či přepsání transakcí.
- Automatická forma řešení konfliktních transakcí, která zajišťuje, že nevalidní transakce (například snaha utratit částku na účtu vícekrát) se nikdy nestanou součástí potvrzeného datasetu.
Základní princip
Implementace blockchainu sestává ze dvou druhů záznamů: transakcí a bloků. Transakce představují data vložená do databáze uživateli, bloky pak záznamy potvrzující, kdy a jak byla konkrétní transakce přidána do databáze blockchainu. Transakce jsou vytvářeny uživateli, kteří systém používají jako databázi (v případě kryptoměn jako účetní knihu). Bloky oproti tomu vytváří těžaři, kteří používají software či hardware vytvořený specificky k vytváření bloků.
Transakce vytvořené uživateli jsou volně předávané od uzlu k uzlu podle toho, kdo má zrovna s kým navázané spojení. Definice validní transakce se liší v závislosti na standardu, jenž implementuje většina uzlů v síti. V případě většiny kryptoměn je za validní transakci většinou považována taková, která má správný elektronický podpis uživatele, utrácí peníze z existující peněženky, ke které uživatel podpisem prokazuje vlastnictví, a zároveň splňuje několik dalších podmínek, jako třeba patřičný honorář (fee) pro těžaře nebo uplynutí dostatečné doby od chvíle, kdy byla zadána poslední transakce s tímto kusem měny.
Těžaři se pak snaží vytvořit blok, který potvrzuje a začleňuje tyto transakce do blockchainu. V kryptoměnách založených na bitcoinu jsou těžaři motivováni k těžení dvěma druhy odměn: předdefinovanou odměnou za vytěžený blok a transakčními poplatky či honoráři (fee), které jsou vyplaceny kterémukoliv těžaři, který správně potvrdí transakci.
Decentralizace
Každý uzel v síti decentralizované kryptoměny obsahuje kompletní či částečnou kopii blockchainu. Tím je vyřešen problém centralizované databáze, kterou používají ostatní technologie, jako například bankovnictví nebo PayPal. Zatímco běžná účetní kniha pouze pasivně zaznamenává přesuny peněz, bankovních poukázek či příkazů k úhradě, které existují nezávisle na této knize, v případě kryptoměn jsou jednotky měny a blockchain pevně spojeny. Blockchain lze v těchto případech považovat za jediné místo, kde jednotky kryptoměny existují ve formě neutraceného součtu všech transakcí.
Transakce ve formě záznamů plátce X posílá Y jednotek měny příjemci Z jsou propagovány celou sítí použitím softwarových prostředků a asymetrické kryptografie. Kterýkoliv uzel sítě je schopen tuto transakci ověřit, přidat do kopie své účetní knihy a přeposlat tyto přírůstky ostatním uzlům.
Řešení problému vícenásobného utrácení
V decentralizovaných distribuovaných databázích vzniká nový druh problému, který je v případě klasických (centralizovaných) databází řešen atomicitou systémových operací. Jedná se o takzvaný double spending problém, česky též problém dvojutrácení, víceutrácení či problém vícenásobného utrácení. Tento problém bránil prakticky do vzniku bitcoinu vytvoření distribuovaných databází.
Problém vzniká, jestliže dva či více uzlů v topologicky vzdálených bodech sítě ve stejný okamžik zadají transakce přikazující přesun peněz ze stejného účtu tak, že ve výsledné sumě je přesunovaná částka větší než zůstatek. Stav, kdy by po určitém čase došlo k propagaci všech zadaných transakcí, by vedl k nekonzistenci zůstatků na účtech. Ty by se tak mohly dostat do mínusu, což by v konečném důsledku vedlo ke ztrátě důvěry v síť a její zánik.
Různé kryptoměny se s tímto problémem vyrovnávají různými způsoby, nejčastěji použitím systémů decentralizovaných časových razítek a hlasování o pořadí transakcí založených na algoritmech proof of work (hlasování na základě prokázaného vlastnictví výpočetního výkonu) či proof of stake (hlasování na základě prokázání vlastnictví podílu kryptoměny).
V obou případech může dojít k takzvanému 51% útoku, kdy vlastník víc jak 51% kryptoměny či výpočetního výkonu získává možnost falšovat či upravovat transakce. Většina implementací kryptoměn tak obsahuje ještě další, dodatečné pojistky, které mají vést k diverzifikaci sítě těžařů (memory hard hashovací algoritmy), aby těmto útokům bylo možné předcházet.
Block time
Pojem block time představuje parametr udávající dobu mezi dvěma vydanými bloky. Většina kryptoměn používá block time v řádu desítek minut (10 minut v případě bitcoinu), poslední dobou se ale objevují nové systémy, které tuto dobu snižují na řádově desítky sekund. Příkladem takového systému je třeba Ethereum, které se pohybuje mezi 10-20 sekundami.
Parametr block time hraje důležitou roli při ověřování validity transakcí, neboť většina systémů považuje transakci kvůli problému vícenásobného utrácení za validní až po několika dalších blocích (v případě bitcoinu jich je šest), do kterých je transakce začleněna.
Obecně se tedy dá říci, že čím kratší čas mezi vydáním dvou bloků, tím rychleji mohou probíhat důvěryhodné obchodní transakce.