Obsah
Co je strom Merkle?
Jak funguje strom Merkle?
Proč se Merkel Root používá v bitcoinu?
Hornictví
ověřit
Shrnout
Co je strom Merkle?
Na počátku 80. let Ralph Merkle, známý počítačový vědec v oblasti kryptografie veřejného klíče, navrhl koncept Merkleho stromu.
Stromová struktura Merkle dokáže efektivně ověřit integritu datové sady a je efektivnější v sítích typu peer-to-peer, které vyžadují, aby účastníci sdíleli a nezávisle ověřovali informace.
Hashovací funkce jsou jádrem stromové struktury Merkle. Proto vám doporučujeme, abyste pochopili, co je hash, než budete pokračovat v tomto článku.
Jak funguje strom Merkle?
Řekněme, že chcete stáhnout velký soubor. Při stahování softwaru s otevřeným zdrojovým kódem je často nutné zkontrolovat, zda hash staženého souboru odpovídá tomu, který zveřejnil vývojář. Pokud se shodují, jsou oba dokumenty konzistentní.
Pokud se hash neshoduje, máte problém. Buď jste stáhli škodlivý soubor maskovaný jako software, nebo jste jej stáhli nesprávně a konečným výsledkem je, že soubor je nepoužitelný. Pokud je stahování nesprávné, určitě se budete cítit otráveni, protože na stažení souboru čekáte dlouho. Pokud nyní začnete znovu, musíte doufat, že se stejný problém nebude opakovat.
Přemýšleli jste někdy, existuje snadnější způsob, jak tento problém vyřešit? Zde přichází strom Merkle. Stromy Merkle mohou rozdělit soubory do více datových bloků. Například soubor o velikosti 50 GB lze rozdělit na 100 kopií, z nichž každá má velikost 0,5 GB. Poté si je můžete stáhnout jeden po druhém. Takhle fungují torrenty.
Zdrojem souboru je v tuto chvíli hodnota hash, nazývaná kořen Merkle. Tato jediná hodnota hash představuje všechny datové bloky, které tvoří soubor. Kromě toho kořeny Merkle usnadňují ověřování dat.
Pro usnadnění pochopení uvádíme příklad. Níže je soubor o velikosti 8 GB rozdělen do osmi částí a každý fragment je pojmenován A až H. Každý fragment je pak zapojen do hašovací funkce, což má za následek osm různých hašovacích hodnot.

Pomocí hašovací funkce se vypočítají hašovací hodnoty osmi fragmentů.
Doufejme, že výše uvedený příklad vysvětlení je snadno pochopitelný. Máme hodnoty hash všech fragmentů, pokud je jeden z nich nesprávný, můžeme najít problém porovnáním zdrojových souborů? Možná, ale stále je to extrémně neefektivní. Pokud má soubor tisíce fragmentů, musíme všechny fragmenty hašovat a výsledky podrobně porovnat?
zbytečné. Potřebujeme pouze zkombinovat pár hodnot hash a provést kombinovanou operaci hash. To znamená, že hašujeme pomocí hA + hB, hC + hD, hE + hF a hG + hH. Výsledkem budou čtyři hodnoty hash. Poté pokračujeme k dalšímu kolu sloučených hashů, dokud nezískáme dvě hodnoty hash. Tyto dvě hašovací hodnoty se poté zkombinují a nakonec se získá hlavní hašovací hodnota, kterou je Merkle root (také nazývaná kořenová hašovací hodnota).

Struktura vypadá jako převrácený strom. Spodní řada listů se vzájemně kombinuje a vytváří uzly a nakonec kořeny.
Nyní máme kořen Merkle představující stažený soubor. Porovnejte kořenový hash s hodnotou zdrojového souboru, a pokud se shoduje, všichni jsou šťastní! Jakmile jsou hodnoty hash odlišné, dokazuje to, že s daty bylo manipulováno. Jinými slovy, jeden nebo více fragmentů vygenerovalo jinou hodnotu hash. Proto i malé úpravy dat mohou zcela změnit kořen Merkelové.
Naštěstí je také snadné zkontrolovat chybné segmenty. Předpokládejme, že chyba je hE. Nejprve požádáme ostatní o dva hashe (hABCD a hEFGH) pro vygenerování Merkleho kořene. Naše hodnota hABCD by se měla shodovat s hodnotou ostatních, což dokazuje, že podstrom je bezchybný. Pokud hEFGH neodpovídá, můžeme chybu opravit zde. Pak se zeptejte ostatních na jejich haše hEF a hGH a porovnejte je se svými vlastními. Pokud je hGH v pořádku, hEF je viníkem. Nakonec porovnáme hašovací hodnoty hE a hF Jakmile zjistíme, že zdrojem chyby je hE, můžeme datový blok znovu stáhnout.
Abych to shrnul, funkcí Merkleho stromu je rozdělit data na více částí a poté opakovaně provádět hashovací operace, aby se nakonec vytvořil Merkle kořen, aby mohl efektivně ověřit, kde se chybná data vyskytují. V další části si představíme další zajímavé aplikace.
Chcete začít svou cestu za kryptoměnami? Přejděte na Binance a kupte si bitcoiny hned teď!
Proč se Merkel Root používá v bitcoinu?
Existuje mnoho případů použití stromů Merkle, ale tento článek se zaměřuje na jeho důležitou roli v blockchainu. Bitcoin a mnohé kryptoměny jsou neoddělitelné od stromů Merkle. Strom Merkle je nedílnou součástí každého bloku, obvykle se nachází v záhlaví bloku. Prostřednictvím transakční hash hodnoty (TXID) každé transakce v bloku můžeme získat listy.
V této souvislosti slouží kořen Merkelové několika účelům. Pojďme se podívat na uplatnění Merkle Root při těžbě kryptoměn a ověřování transakcí.
Hornictví
Bitcoinové bloky se skládají ze dvou částí. První částí je hlavička bloku, která má pevnou velikost a obsahuje metadata bloku. Druhou částí je tělo bloku, které má proměnlivou velikost, ale obvykle mnohem větší než hlavička bloku a obsahuje seznam transakcí.
Těžaři potřebují opakovaně hašovat data, dokud není vytvořen výsledek, který splňuje určité podmínky, než mohou vydolovat platný blok. Aby dosáhli správného výsledku, musí to zkusit bilionkrát. Při každém pokusu těžař změní náhodné číslo v hlavičce bloku, hodnotu Noce, aby generoval jiné výsledky. Zbytek bloku však zůstává stejný a tisíce transakcí v něm je stále třeba pokaždé hashovat.
Merkelová celý proces značně zjednodušila. Když začne těžba, všechny transakční fronty se sbalí a zkonstruují do Merkleho stromu a vygenerovaná 32bitová kořenová hash hodnota se umístí do hlavičky bloku. Pak není potřeba hashovat celý blok, stačí hlavička bloku.
Tato metoda zabraňuje neoprávněné manipulaci s daty, a proto je efektivní a umožňuje efektivně shrnout všechny transakce v bloku do kompaktní podoby. Seznam transakcí platných hlaviček bloků nelze upravit, jinak bude změněn kořen Merkle. Po odeslání bloku do jiných uzlů se ze seznamu transakcí vypočítá kořenový hash. Pokud se neshoduje s hodnotou v hlavičce bloku, může být blok odmítnut.
ověřit
Existuje další zajímavá vlastnost, kterou můžeme využít u kořenů Merkle, která souvisí s aplikací odlehčených klientů (uzlů, které neuchovávají kompletní kopii blockchainu). Pokud provozujete uzel na zařízení s omezenými prostředky, nechcete stahovat a hashovat všechny transakce v bloku. Místo toho jednoduše požádáte o důkaz Merkle, což je důkaz poskytnutý úplným uzlem, že transakce byla zahrnuta do konkrétního bloku. Tento důkaz je známější jako Simple Payment Verification nebo SPV a byl podrobně popsán v bílé knize o bitcoinech od Satoshi Nakamota.

Pro kontrolu HD stačí ověřit červený hash.
Předpokládejme, že chceme získat informace o transakci o TXID hD. Pokud je známo hC, lze hCD vypočítat. Poté lze pomocí hAB vypočítat hABCD. Nakonec odkazem na hEFGH můžete zkontrolovat, zda je vypočítaný kořen Merkle konzistentní s kořenovým hashem v hlavičce bloku. Úspěšná shoda dokazuje, že transakce byla zahrnuta do bloku, protože generování stejného hashe pomocí různých dat je téměř nemožné.
Ve výše uvedeném příkladu jsme hašovali pouze třikrát. Bez certifikace Merkelové by to trvalo sedm. Dnešní bloky obsahují tisíce transakcí a důkazy Merkle nám šetří spoustu času a výpočetního výkonu.
Shrnout
Stromy Merkle se ukázaly jako důležité v aplikacích výpočetní techniky, a jak jsme viděli, jsou cenné také v blockchainu. Stromy Merkle usnadňují ověřování informací v distribuovaných systémech a zabraňují zahlcení nadbytečnými daty v síti.
Bez stromů Merkle a kořenů Merkle by Bitcoin a další bloky kryptoměn nebyly tak kompaktní jako dnes. Přestože lehkí klienti postrádají výhody z hlediska soukromí a bezpečnosti, s důkazy Merkle mohou uživatelé ověřit, že transakce jsou zahrnuty v blocích s minimálními poplatky.

