Hash – Puzzle bitcoinů


V předchozím příspěvku jsme vysvětlili myšlenky, které stojí za bitcoinovým systémem, ale jedno číslo zůstalo nevysvětlené: Co je to krvavé tvrdé puzzle, které se horníci bitcoinů neustále snaží řešit?

Připomeňme, že v bitcoinovém systému horníci neustále konkurují: Kdo vyřeší hádanku jako první, získá tu čest přidáním nového bloku do blokového řetězce a vydělá také nějaké peníze. Horníci se proto horečně snaží být první, kdo vyřeší hádanku. V následující části se budeme zabývat následujícími otázkami:

  • Co přesně je tato hádanka?
  • Jak je integrován do systému bitcoinů?

Puzzle - kryptografické hašovací puzzle

Nebojte se slova „kryptografie“, v našem kontextu to jednoduše znamená, že puzzle „hash“ souvisí se světem kryptografie, tj. Budováním nerozbitných systémů.

Možná nejlepší analogií skutečného světa k hašovací hlavolam je otisk prstu.

Otisk prstu na modrém pozadí

Představte si, že vám byl odebrán vzorek otisku prstu a jste požádáni, abyste objevili výšku, hmotnost a celkový vzhled osoby, které tento otisk prstu patří. Co bys dělal?

Aby to bylo o něco těžší, předpokládejme, že neexistuje žádná korelace mezi otisky prstů a dalšími lidskými rysy (jako je barva vlasů), takže jediným způsobem, jak otestovat, zda tento otisk prstu pochází od vašeho nejlepšího přítele, je vzít jeho otisk prstu a porovnat jej s druhým.

Vaše nejlepší volba by tedy byla odebrání otisků prstů od každé osoby na Zemi a jejich porovnání s dotyčným otiskem prstu, dokud nenajdete shodu a nezastavíte se. V případě, že máte smůlu, bude tou pravou osobou ta poslední, kterou jste zkontrolovali, což znamená, že ho budete hledat dalších 13 555 let, za předpokladu, že zkontrolujete jednu osobu za minutu (a populace Země je asi 7,125 miliard) lidé). Pokud ale budete mít štěstí, očekává se, že budete hledat tuto osobu jen na polovinu této doby, hurá! Špatné zprávy?

Vraťme se k našemu hašovacímu puzzle. V hašovací hádance, který jste dostali, je seznam znaků (řekněme to slovo), například „pes“, po kterém vaším úkolem je najít tu správnou osobu (v našem případě je to také slovo) který vytvořil otisk prstu. Za tímto účelem jediné, co můžete udělat, je vyzkoušet všechny možné kombinace číslic (nějaké délky), jeden po druhém.

krypto

(Zdroj obrázku: https://blog.varonis.com/the-definitive-guide-to-cryptographic-hash-functions-part-1/)

Koncepčně vzato máte stroj, který kdykoli do něj vložíte nějaké číslice, vytvoří výstup nějaké jiné kombinace číslic. O tomto počítači nevíte nic a funguje to jako magie - nevidíte žádnou korelaci mezi postavami, které vložíte, a postavami, které vytváří. Jediné pravidlo, které jste si všimli, je, že bez ohledu na to, kolik znaků vložíte do stroje, produkovaný výstup má vždy stejnou délku.

Jeden malý technický problém: Znaky, které stroj používá (váš vstup i výstup), se skládají pouze z deseti číslic 0-9 a šesti písmen a-f. To znamená, že každý znak vstupu nebo výstupu může být jeden ze 16 znaků.

Hádanka je v podstatě slovo (seznam znaků), nazývejte jej A, což představuje výstup stroje, abyste jej vyřešili, je vaším úkolem najít správný vstup (jiné slovo), zavolat iti B, takže když vložíte B do stroje dostanete A jako výstup.

Počínaje jednoduchým případem předpokládejme, že stroj produkuje výstupy jediného znaku. To znamená, že existuje pouze 16 různých možných výstupů. Předpokládejme například, že jste dostali znak „d“ (jako puzzle) a stroj pracuje takovým způsobem, že každý vložený znak vede k jinému znaku s výstupem. Pokud tedy vyzkoušíte všechny možné znaky 0-9 a a-f, najdete shodu, tj. Znak, který po vložení do stroje vytvoří znak „d“ jako výstup. K tomu je třeba zejména minimálně 16 srovnání zcela jistý že bude nalezen zápas.

To komplikuje trochu dále, zvažte případ, kdy stroj produkuje výstup 2 znaky místo jednoho, jako v předchozím příkladu. To znamená, že existuje 16x16 = 256 různých možných výstupů. Pokud tedy máte nějaké puzzle, například „4c“, budete muset vyzkoušet všechny možné vstupy se 2 znaky (tj. „00“, „01“… „fd“, „fe“, „ff“), abyste mohli zaručit úspěch.

Všimněte si, že zvětšení výstupní délky stroje o jeden znak zvyšuje počet pokusů, které je třeba provést, o jednu řádovou velikost (v našem příkladu faktorem 16!). Výstup jednoho znaku tedy vede k 16 pokusům, výstup 2 znaky k 256 pokusům, výstup 3 znaky k 4096 pokusům atd..

Takže, „co se děje?“ Může se zeptat. Počítače jsou v dnešní době tak rychlé, že si můžete vytvořit software, který pro vás vypočítá všechny zkoušky za několik sekund!

Možná jste si všimli, že počet pokusů roste v roce exponenciální cesta! To znamená, že pro výstup x znaků budete muset udělat x16trials! Pro výstup 40 znaků budete muset provést 1461501637330902918203684832716283019655932542976 pokusů !! Toto číslo je tak obrovské, že žádný moderní počítač nemůže provést tento počet pokusů, i když to funguje nepřetržitě až do zhroucení sluneční soustavy..

Pokud stále nejste přesvědčeni, že hašovací hádanka je těžká, zkuste to a najděte řešení následující hádanky: Najděte seznam znaků, které při uvedení do SHA1 dostanete výstup všech nulové znaky (tj. „000000…“). Stroj je k dispozici na adrese sha1-online.com. Hodně štěstí ��

Spojení s bitcoiny

Připomeňme si (z předchozího příspěvku), že v každém krátkém čase (obvykle 10 minut) je do „blokového řetězce“ připojen jediný „blok“ jediným „horníkem“ (vítěz kola). Ten horník, který připojí tento blok, je první, kdo našel řešení hašovací hlavolam. Abychom pochopili tuto hádanku, musíme vědět, jak blok vypadá. Podrobnosti následují.

Stručně řečeno, blok v blokovém řetězci je nějaká datová struktura obsahující:

  1. Je to jádro řešení, část bloku, která opravňuje horníka k transakčnímu poplatku.
  2. Odkaz na předchozí blok - to je nutné, aby bylo možné sledovat historii všech transakcí, každý blok odkazuje svého předchůdce, tímto způsobem se lze vrátit do historie až do prvního bloku (Můžete sledovat historii transakcí na blockchainu .info)
  3. Seznam všech transakcí, které mají být zpracovány, pokud je tento blok připojen k řetězci bloků.

Na obrázku níže vidíte tyto 3 vlastnosti: nonce (v posledním zažloutlém řádku), odkaz ('předchozí blok hash') a seznam transakcí v šedých řádcích (je vysvětlena zvýrazněná pravá strana obrázku). již brzy).

block-diagram-ghash

(zdroj obrázku: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html)

Jak již bylo zmíněno, horníci hledají správnou neteř, která by vyřešila hádanku. Hašovací hádanka popsaná v předchozí otázce byla a charakteristický seznam znaků, které stroj vytvořil jako výstup, pro jeho vyřešení je třeba najít vstup, který toto vytvoří charakteristický výstup.

V bitcoinovém systému je však hash puzzle poněkud jednodušší: Místo pronásledování po konkrétním výstupu musí horník najít vstup, který produkuje výstup z velké sady povolených výstupů. To znamená, že skládačka může být seznam znaků tak, že prvních 16 znaků bude „0“, zatímco zbývající znaky nebudou nijak omezeny, mohou to být cokoli. Ačkoli to dělá hádanku mnohem jednodušší, je to časově a energeticky náročný problém vyřešit. Na obrázku nahoře provádí horník mnoho pokusů, aby vyřešil hádanku. Jediným polem, které je povoleno měnit se v každém pokusu, je neteř. V každém pokusu horník kombinuje nonce, které si právě vybral, seznam transakcí, které si přál přidat do blokového řetězce a odkaz na předchozí blok dohromady, pak jej vloží do stroje SHA1. Pokud výstup stroje SHA1 začíná 16 znaky, 0 vyřešilo hádanku a vyhrálo hru.

Doufám, že se vám čtení líbilo, uvidíme se v dalším příspěvku!

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me