Kryptoměna Bitcoin
Kryptoměna Bitcoin (6/9) · 10:32

Bitcoin - Proof of work, doklad o práci Vysvětlení tzv. kryptografických proof-of-work protokolů, které jsou používány v různých kryptografických aplikacích a pro těžení bitcoinů.

Navazuje na Peníze a bankovnictví.
Protokol proof of work (doklad o práci) je prostředek, jehož prostřednictvím vám může někdo dokázat, že zapojil určité množství výpočetního úsilí. A protokoly proof of work jsou často jako rébusy. Tyto rébusy, na jednu stranu, může být těžké vyřešit. Tím myslím, že vyžadují seriózní výpočetní úsilí, které opravdu nelze příliš snížit. Ale na druhou stranu, toto úsilí může být jednoduše ověřeno a může být ověřeno za méně času než kolik trvalo naše snažení o vyřešení rébusu. A tyto protokoly se dají různě využít. Například pokud jste slyšeli o bitcoinech, elektronickém platebním systému bitcoin, tento platební systém ovlivňuje schéma proof of work v tom smyslu, že vytváří tzv. transakční blockchainy. Kromě bitcoinů, což je velmi čerstvý uživatel protokolů proof of work, tyto protokoly byly v minulosti navrženy pro jiné aplikace. Například protokoly proof of work byly navrženy, aby dělaly věci jako odstrašování útoků typu odepření služby neboli útoků DoS. Myšlenkou je, zájemce o konkrétní službu by musel vyřešit určitý výpočetní příklad, rébus proof of work, než by mu byl umožněn přístup k využívání služby. A myšlenkou je, že vynaložená výpočetní snaha je způsobem, jak omezit žadatele. respondent zase naopak může jednoduše ověřit, jestli žadatel udělal požadovanou práci. A pouze když byla práce udělána, pak dostane žadatel odpověď na svou žádost o službu. Původní využití pro tyto druhy protokolů proof of work, první místo, kde jsem je viděl nabízené, bylo v kontextu filtrování nevyžádané pošty (email). Doufám, že všichni víme, co je spam. Některé emaily, které nechcete ve své mailové schránce a přichází vám, přestože jste o to nežádali. A představou je, že protokol proof of work může být spojen s konkrétní mailovou zprávou. Což je vlastně jako nalepení poštovní známky na zprávu, ale spíš než že byste platili za použití známky penězi, platíte za známku prostřednictvím cyklů CPU. Takže pro oprávněného odesílatele, který posílá jen málo zpráv, nebude tento typ proof of work protokolu příliš drahý. Bude to jen lehce odrazující, protože je to provedeno jen málokrát. Je to vlastně překážka, ale není to nic nesmyslného. Ale pro spammera, který posílá velké množství zpráv, možná stovky tisíc nebo miliony zpráv, pro něj to bude neúnosně drahé, aby opakovaně platil za tolik CPU cyklů za každou zprávu a každého příjemce, kterému je zpráva určena. Toto byla taková ochutnávka některých využití protokolů proof of work.. Ale pojďme se teď ponořit do toho, jak fungují v praxi. Nejdříve způsob, jakým se já rád dívám na tyto protokoly, je, že pracují ve vztahu k danému tzv. „challenge string". Budu tomu říkat challenge string, označíme jej písmenem c. „c“ je challenge string. A co udělá uživatel, který se snaží zapojit do protokolu, neboli dokladač práce (prover) se bude snažit najít odpovídající důkaz (proof), který se váže k tomuto challenge stringu. Je to vlastně taková odpověď spojená s touto výzvou. A má velmi specifické matematické vlastnosti spojené s touto výzvou. A jak na to upozorňujete, když tady mluvím o challenge string, například v kontextu spamu, tento challenge string vlastně představuje mailovou zprávu. Takže to bude pro daný úkol velmi konkrétní věc. A co teď bude dělat prover (dokladač) je, že přijde s tzv. response (odezva) string, nazveme tento response string „r“. Vlastně, budeme tomu říkat raději „p“, protože o tom můžeme uvažovat jako o důkazu, tzv. proof of a response. (důkaz odpovědi) Myšlenkou je, že prover (dokladač) přijde s proof of response string, a musí přijít se stringem jako je tento. Když spojíte výzvu a odpověď (challenge a response), a dáte je dohromady a použijete na ně kryptografickou hašovací funkci... Řekněme, že jsem přišel s kryptografickou hašovací funkcí jako je SHA-256 nebo cokoliv podobného. Když vezmu challenge string a proof string, spojím je dohromady a použiji kryptografickou hašovací funkci, použiji tyto matematické vzorce, které představují kryptografickou hašovací funkci. Chci přijít s takovým proof stringem, aby výstup pod hašovací funkcí měl speciální vlastnost. Předponou našeho výstupu, první velký počet bitů, bude 0. Řekněme, že prvních 40 bitů, nebo prvních 30 bitů nebo jiné množství bitů bude 0. A ty další bity mohou být cokoliv, co by byly normálně. Vy se tedy snažíte udělat to, že přijdete s proof stringem, který se vztahuje k challenge stringu. A tento vztah je takový vztah, který je přijat s ohledem na danou hašovací funkci. A také začleňuje nebo bere v úvahu, jaký bude výstup hašovací funkce, když proof string je spojený s challenge stringem. A když máte dobrou kryptografickou hašovací funkci, potom jediným způsobem, jak najít tento typ proof stringu, je vyzkoušet spoustu různých variant. Vlastně používáte hrubou sílu tím, že zkoušíte mnoho různých prooof stringů dokud nenajdete ten, který funguje. Teď řekněme, že potřebujete najít výstup, který by obsahoval 40 po sobě jdoucích nul. Takže byste museli vyzkoušet (2 na čtyřicátou) kroků, 2 na čtyřicátou různých hašovacích možností. Museli byste vyzkoušet 2 na čtyřicátou různých řad (stringů) a jeden z nich by nejspíš fungoval, kdybyste vyzkoušeli 2 na čtyřicátou různých řad. To by pro vás znamenalo vyzkoušet zhruba... 2 na čtyřicátou je zhruba 1 trilion možností. Kdybyste vyzkoušeli trilion různých stringů, každý z nich hašovali, dostali byste jeden string, který by měl prvních 40 bitů nulových. Ale někdy vám to může trvat mnohem méně než trilion pokusů. A někdy vám to může trvat trošku déle. Můžete mít opravdu štěstí. Anebo můžete mít opravdu smůlu. Ale v průměru vám to bude trvat asi 1 trilion pokusů, než najdete řadu, kde je prvních 40 bitů rovných 0. Tohle není moc jednoduché, ale není to úplně nereálné. A teď abyste pochopili, proč je tak těžké vyřešit tyto druhy schémat proof of work efektivněji než jen hrubou silou. Myslím, že je na čase připomenout, že výstup z kryptografické hašovací funkce je víceméně náhodný. Vlastně, každý výstupní bit vypadá jako série hodů mincí. Je to jako házet mincí, když padne panna, dostanete 0, když padne orel, můžete si ho představit jako 1. Ve skutečnosti si tedy kladete otázku, když jsem hodil mincí čtyřicetkrát, jaká je pravděpodobnost, že mi čtyřicetkrát po sobě padla panna? Ta pravděpodobnost je očividně velmi malá, ale není nemožná. Pokud jste házeli 40 mincemi a házeli jste těmi 40 mincemi asi trilionkrát, dočkali byste se jednou okamžiku, kdy by na všech 40 mincích padla panna, jednou za trilion pokusů. Zajímavé na schématech proof of work je, že mohou postupně narůstat nebo klesat. Například řekněme, že chcete použít ještě složitější výpočetní postupy, abyste našli správný proof string. Řekněme, že chcete zvýšit množství práce, které tu bude dokazováno. A co byste mohli dělat, je, že zvýšíte požadavek na počet nul na počátku. Vždy, když přidáte další 0, zdvojnásobíte tím průměrnou výpočetní sílu, potřebnou k nalezení řešení. Je to proto, že požadujete, aby padla hlava ještě na jedné další minci, což vede ke zdvojnásobení pokusů hodů mincemi. Když budu mít 41 hodů mincí a budu chtít, aby hodil pannu 41krát, vyžadovalo by to dvojnásobné úsilí než kdybych chtěl 40 po sobě jdoucích pan. A naopak, pokud odstraníte jednu 0, snížíte tím průměrnou potřebnou výpočetní sílu na polovinu toho, co bylo potřeba předtím. Například kdybych potřeboval, aby bylo nulových jen prvních 39 bitů, potřeboval bych polovinu pokusů, než kdybych potřeboval prvních 40 bitů rovno 0. Krásné je, že když jednou naleznete řešení, řekněme, že někdo udělal trilion pokusů, a konečně objevil proof string, který funguje, je velmi jednoduché označit tento proof string jako správný proof of work. Jediné, co musíte udělat, je, že vezmete challenge (výzvu) a vezmete proof string a hašujete je dohromady. Například když někdo přijde s tímto stringem, nazveme jej „p“ prime (prvotní). A všechno co uděláme, je, že vezmeme challenge, vezmeme p prime a vložíme je do hašovací funkce a uvidíme, jestli prvních 40 bitů je nulových. Tady je tedy potřeba, abyste aplikovali hašovací funkci na spojení challenge „c“ a „p“ prime. A můžete si ověřit, že váš výstup má potřebné množství nul na začátku. A když vidíte, že výstup má ono požadované množství nul, pak můžete považovat proof of work za platný. Protože víte, že někomu muselo trvat velmi dlouho, hodně pokusů, než přišel se stringem „p“ prime takovým, že spojení „c“ a „p“ prime nám dá daný počet nul, když na toto spojení aplikujeme kryptografickou hašovací funkci. Jak tedy můžete vidět, tato schémata jsou poměrně jednoduchá, ale zároveň poměrně chytrá. Ve skutečnosti přijdou s proof stringem, který má velmi charakteristickou matematickou vazbu na původní challenge string. Doufám, že vám toto video dalo ochutnat mechanismus, jak fungují tyto protokoly proof of work.
video