Košík

Čo je to merkle strom? Dnes tu máme opäť zaujímavý článok zo sveta kryptografie a počítačových vied. O merkle stormoch zatiaľ mnoho ľudí nepočulo, ale táto technológia je opäť veľmi dôležitá pre celý krypto svet. O čo sa jedná?

Čo je to strom Merkle?

Koncept stromu Merkle navrhol na začiatku 80. rokov Ralph Merkle – počítačový vedec známy vďaka svojej práci v oblasti kryptografie pomocou verejného kľúča.

Strom Merkle je štruktúra používaná na efektívne overovanie integrity údajov. Obzvlášť zaujímavé sú v kontexte sietí typu peer-to-peer, kde účastníci musia zdieľať a nezávisle overovať informácie. Hašovacie funkcie sú jadrom stromových štruktúr Merkle.

Ako fungujú stromy Merkle?

Predpokladajme, že chcete stiahnuť veľký súbor. Pomocou softvéru s otvoreným zdrojovým kódom by ste zvyčajne chceli skontrolovať, či sa hash stiahnutého súboru zhoduje s hashom, ktorý vývojári zverejnili. Ak áno, viete, že súbor, ktorý máte vo svojom počítači, je úplne rovnaký ako ten ich.

Ak sa hodnoty hash nezhodujú, máte problém. Stiahli ste si škodlivý súbor, ktorý sa maskuje ako softvér, alebo sa nestiahol správne, a preto nebude fungovať. Ak je to tak, pravdepodobne nebudete príliš spokojný, ak ste si na načítanie súboru museli nejaký čas počkať. Teraz je potrebné proces reštartovať a dúfať, že sa znova nepoškodí.

Práve tu prichádzajú na scénu stromy Merkle. S jedným z nich by sa vám súbor rozdelil na kúsky. Ak by išlo o 50 GB súbor, môžete ho rozdeliť na sto kusov, takže každý z nich má veľkosť 0,5 GB. Potom by sa to sťahovalo kúsok po kúsku. Toto je v podstate to, čo robíte pri torrent súboroch.

V takom prípade vám váš zdroj poskytne hash známy ako koreň Merkle. Tento jediný hash predstavuje hromadu údajov, ktoré tvoria váš súbor. Avšak koreň Merkle uľahčuje overenie údajov.

Aby sme to zjednodušili, vezmime si príklad, keď používame 8 GB súbor rozdelený na osem častí. Dostaneme fragmenty A až H. Každý fragment potom prejde hashovacou funkciou, čím získate osem rôznych hashov.

Obrázok 1 – Každý z našich ôsmich fragmentov prechádzame cez funkciu hash, aby sme získali ich hashe.

Máme hash všetkých fragmentov, takže ak je niektorý chybný, zistíme to tak, že ho porovnáme s pôvodným. Ale to je tiež neefektívne. Ak má váš súbor tisíce fragmentov, budete skutočne všetky hashovať a dôsledne porovnávať výsledky? Určite nie. Namiesto toho vezmeme každý pár hashov, spojíme ich a potom spolu hashujeme. Takže máme hash hA + hB, hC + hD, hE + hF a hG + hH. Nakoniec skončíme so štyrmi hašmi. Potom urobíme ďalšie kolo hashovania, aby sme skončili dvoma. Nakoniec zvyšné dva zahashujeme, aby sme sa dostali k nášmu hlavnému hashu – koreňu Merkle (alebo root hash).

Obrázok 2 – Štruktúra vyzerá ako strom hore nohami. V spodnom rade máme listy, ktoré sa spoja, aby sa vytvorili uzly a nakoniec koreň.

Teraz máme koreň Merkle, ktorý predstavuje súbor, ktorý sme stiahli. Môžeme porovnať tento koreňový hash s tým, ktorý poskytol zdroj. Ak sa to zhoduje, je to on. Ak sú však hashe odlišné, môžeme si byť istí, že boli údaje upravené. Inými slovami, jeden alebo viac fragmentov vytvorilo iný hash. Akákoľvek nepatrná úprava údajov nám teda dá úplne odlišný koreň Merkle.

Prečítajte si aj : Čo sú zero knowledge proofs?

Našťastie existuje šikovný spôsob ako skontrolovať, ktorý fragment je chybný. V našom prípade povedzme, že je to „hE“(viď obr. 2). Začali by ste tým, že by ste požiadali partnera o dva hashe, ktoré vytvorili koreň Merkle (hABCD a hEFGH). Vaša hodnota hABCD by sa mala zhodovať s ich hodnotou, pretože v tomto podstrome nie je žiadna chyba. Ale hEFGH nebude, takže viete, že to máte skontolovať. Potom požiadate o hEF a hGH a porovnáte ich s vašimi. hGH bude vyzerať dobre, takže viete, že hEF je náš vinník. Na záver porovnáte haše hE a hF. Teraz viete, že hE je nesprávna, takže môžete tento kúsok znova stiahnuť.

Keď to všetko zhrnieme, strom Merkle sa vytvorí rozdelením údajov na veľa častí, ktoré sa potom opakovane hashujú, aby vytvorili koreň Merkle. Potom môžete efektívne overiť, či sa s údajmi niečo pokazilo.

Prečo sa korene Merkle používajú v Bitcoine?

Existuje niekoľko prípadov použitia pre stromy Merkle, ale tu sa zameriame na ich význam v blockchainoch. Merkle stromy sú nevyhnutné v Bitcoine a mnohých ďalších kryptomenách. Sú neoddeliteľnou súčasťou každého bloku, kde ich možno nájsť v hlavičkách blokov. Aby sme dostali listy pre náš strom, použijeme hash transakcie (TXID) každej transakcie zahrnutej v bloku.

Koreň Merkle slúži v tomto prípade na dva účely. Pozrime sa na ich aplikácie v oblasti ťažby kryptomien a overovania transakcií.

Kurzy mensi

1. účel – ťažba

Bitcoinový blok sa skladá z dvoch častí. Prvou časťou je hlavička bloku, segment pevnej veľkosti, ktorý obsahuje meta údaje bloku. Druhou časťou je zoznam transakcií, ktorých veľkosť je variabilná, býva však oveľa väčšia ako hlavička.

Ťažiari musia opakovane hashovať údaje, aby vytvorili výstup, ktorý zodpovedá určitým podmienkam, aby vyťažili platný blok. Pred nájdením môžu urobiť bilióny pokusov. Pri každom pokuse menia náhodné číslo v hlavičke bloku (nonce), aby vytvorili iný výstup. Ale veľká časť bloku zostáva rovnaká. Môžu to byť tisíce transakcií a stále ich budete musieť zakaždým hashovať.

Koreň Merkle tento proces výrazne zefektívňuje. Keď začnete ťažiť, zoradíte všetky transakcie, ktoré chcete zahrnúť a zostavíte strom Merkle. Výsledný hash koreňa (32 bajtov) dáte do hlavičky bloku. Keď potom ťažíte, stačí namiesto celého bloku hashovať hlavičku bloku.

Funguje to, pretože je odolný proti neoprávnenej manipulácii. Účinne zhrniete všetky transakcie bloku v kompaktnom formáte. Nemôžete nájsť platnú hlavičku bloku a neskôr zmeniť zoznam transakcií, pretože by sa tým zmenil koreň Merkle. Keď je blok odoslaný do ďalších uzlov, vypočítajú koreň zo zoznamu transakcií. Ak sa nezhoduje s tým v hlavičke, blok odmietnu.

2. účel – overovanie transakcií

Môžeme využiť ďalšiu zaujímavú vlastnosť koreňov Merkle. Toto sa týka ľahkých klientov (uzly, ktoré neobsahujú úplnú kópiu blockchainu). Ak prevádzkujete uzol na zariadení s obmedzenými zdrojmi, nechcete sťahovať a hashovať všetky transakcie bloku. Namiesto toho môžete jednoducho požiadať o dôkaz Merkle – dôkaz poskytnutý celým uzlom, ktorý dokazuje, že vaša transakcia je v konkrétnom bloku. Toto sa bežne označuje ako zjednodušené overovanie platieb (SPV) a podrobne ho uviedol Satoshi Nakamoto v dokumente Bitcoin.

Obrázok 3 – Na kontrolu hD nám stačia iba hashe zobrazené červenou farbou.

Povedzme scenár, keď chceme vedieť informácie o transakcii, ktorej TXID je hD. Ak je nám poskytnutý hC, môžeme vypočítať hCD. Potom potrebujeme hAB na výpočet hABCD. Nakoniec pomocou hEFGH môžeme skontrolovať, či sa výsledný koreň Merkle zhoduje s koreňom v hlavičke bloku. Ak áno, je to dôkaz, že transakcia bola zahrnutá do bloku – bolo by takmer nemožné vytvoriť rovnaký hash s rôznymi údajmi.

V uvedenom príklade sme museli hash používať iba trikrát. Bez dôkazu Merkle by sme to museli urobiť sedemkrát. Pretože bloky v dnešnej dobe obsahujú tisíce transakcií, použitie dôkazov Merkle nám ušetrí veľa času a výpočtových prostriedkov.

Stromy Merkle sa osvedčili ako veľmi užitočné vo veľa odboroch informatiky. V distribuovaných systémoch umožňujú stromy Merkle ľahké overenie informácií bez zaplavenia siete nepotrebnými údajmi. Bez stromov Merkle (a koreňov Merkle) by bloky Bitcoinu a ďalších kryptomien neboli ani zďaleka také kompaktné ako dnes.

Zdroje: academy.binance.com, inevstopedia.com

Disclaimer

Až 13 kryptomien aktualizovaných každý deň, mince so zápalnou šnúrou, fundamenty, vzdelávanie, VIP chat pre všetkých a LIVE ROOM, kde naživo obchodujeme. Kryptomeny jednoducho a zrozumiteľne s Trader2.0

Tento článok patrí firme JKralo s.r.o a je chránený copyrightom. Akéhokoľvek zneužitie (napr. kopírovanie) je trestné! Uverejnené informácie sú autorským dielom a bez súhlasu nie je ďalšie šírenie tohto materiálu povolené.

Kontakt : 
Telegram : https://t.me/jtrader20
Facebook : https://www.facebook.com/kralovanskyjakub
Instagram : https://www.instagram.com/bitcoin_trader2.0/
Web : https://trader20.sk/
E-mail : info@trader20.sk
Youtube kanál : https://www.youtube.com/channel/UCLf520Y_L1DQKURva4npXUA?view_as=subscriber

75486051_1455104544666141_6829501680044736512_n

Leave a Reply