Што е дрво Меркл? Водич за почетници за оваа блокчејн компонента

Дрвјата Меркл се основна компонента на блокчејновите што ја поткрепуваат нивната функционалност. Тие овозможуваат ефикасна и сигурна верификација на големи структури на податоци, а во случај на блокчејн, потенцијално безгранични сетови на податоци.

Имплементацијата на Merkle дрвјата во блокчејн има повеќекратни ефекти. Тоа им овозможува да се размерат, а истовремено обезбедува архитектура базирана на хаш за да го одржуваат интегритетот на податоците и тривијален начин да го потврдат интегритетот на податоците.

Криптографските хаш-функции се основната технологија што им овозможува на Merkle дрвјата да работат, па затоа, прво, важно е да се разбере што се криптографските хаш функции.

Брза пресуда: Дрвјата Меркл се структури на податоци составени од криптографски хаши кои овозможуваат ефикасна проверка на интегритетот и мапирање на големи збирки податоци, што ги прави интегрална компонента на системи како блокчејн и дистрибуирана контрола на верзии.


Брзи факти

Клучните точкиОпис
Криптографски хаш функцииХеш-функции кои земаат влез од која било големина и даваат хаш вредност со фиксна должина. Се користи во дрвјата Меркл.
Структура на дрвото МерклСтруктура на податоци на дрво каде што секој јазол што не е лист е хаш од неговите детски јазли. Овозможува ефикасно мапирање и верификација на големи збирки податоци.
Корен хашХеш на врвот на дрвото Меркл што го претставува хашот на целото дрво. Делува како отпечаток од прст за целосниот сет на податоци.
Меркл доказиДозволете проверка на интегритетот на податоците и позицијата во стеблото без да ви треба целосен сет на податоци, само root хаш.
Имплементација во BitcoinМеркловите дрвја ги складираат трансакциите во блокови. Корен хаш зачуван во заглавието на блок им овозможува на SPV јазлите да ги потврдат трансакциите.
Други имплементации на блокчејнСе користи во многу блокчејнови како Ethereum кој користи посложени Merkle Patricia Trees.
Дистрибуирани системиДозволете системите за контрола на верзии како Git и IPFS лесно да ги проверуваат податоците споделени помеѓу врсниците.

Криптографски хаш функции

Едноставно кажано, хеш-функција е секоја функција што се користи за мапирање на податоци со произволна големина (влез) на излез со фиксна големина. На влезот на податоците се применува алгоритам за хаширање и добиениот излез со фиксна должина се нарекува хаш.

Многу алгоритми за хаширање се широко достапни за јавноста и може да се изберат врз основа на вашите потреби.

Резултирачкиот хаш од произволниот влез не е само фиксиран по должина, туку е и целосно единствен за влезот и самата функција е детерминистичка. Односно, без разлика колку пати ја извршувате функцијата на истиот влез, излезот секогаш ќе биде ист.

На пример, ако ги имате следните множества на податоци подолу како влез, добиените излези се единствени за секој влез. Забележете како во вториот и третиот пример, иако разликата на влезовите е само еден збор, добиените излези се сосема различни.

Ова е многу важно бидејќи овозможува „отпечаток“ на податоци.

Функција за криптографски хаш, слика од Википедија

Бидејќи должината на излезот (збирот на хашот во примерот) е секогаш иста како што е одредена од користениот алгоритам за хаширање, огромни количини на податоци може да се идентификуваат исклучиво преку нивниот резултат на хашот.

Со системи кои содржат огромни количини на податоци, придобивките од можноста за складирање и идентификување податоци со излез со фиксна должина може да создадат огромни заштеди на складирање и да помогнат да се зголеми ефикасноста.

Во рамките на блокчејн, алгоритмите за хеширање се користат за да се одреди состојбата на блокчејнот.

Blockchains се поврзани списоци кои содржат податоци и хаш-покажувач кој укажува на претходниот блок, создавајќи синџир на поврзани блокови, па оттука и името „blockchain“.

Секој блок е поврзан еден со друг преку хаш покажувач, кој е хаш на податоците во претходниот блок заедно со адресата на претходниот блок. Со поврзување на блокови на податоци во овој формат, секој добиен хаш од претходниот блок ја претставува целата состојба на блокчејнот бидејќи сите хаширани податоци од претходните блокови се хашираат во еден хаш.

Ова е претставено (во случајот на алгоритмот SHA-256) со излез (хаш) како што е ова:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Хешот погоре е отпечаток на целата состојба на блокчејнот пред него. Состојбата на блокчејнот пред новиот блок (како хеширани податоци) е влезот, а добиениот хаш е излезот.

Иако е можно да се користат криптографски хаши без Merkle дрвја, тој е крајно неефикасен и не може да се скалира. Користењето хашови за складирање на податоци во блок во сериски формат одзема многу време и е незгодно.

Како што ќе видите, Merkle дрвјата овозможуваат тривијална резолуција на интегритетот на податоците, како и мапирање на тие податоци низ целото дрво со помош на Merkle докази.


Merkle Trees и Merkle Proofs

Именувани по Ралф Меркл, кој го патентирал концептот во 1979 година, дрвјата Меркл во основа се стебла на структурата на податоци каде што секој јазол без лист е хаш од соодветните детски јазли.

Листовите јазли се најниското ниво на јазли во дрвото. На почетокот, можеби звучи тешко за разбирање, но ако ја погледнете најчесто користената фигура подолу, ќе стане многу полесно да се разбере.

Хаш дрво

Пример за бинарно хаш дрво, Слика од Википедија

Поважно, забележете како јазлите или „гранките“ кои не се лисја (претставени со хаш 0-0 и хаш 0-1) на левата страна, се хаш на нивните соодветни деца L1 и L2. Понатаму, забележете како гранката Хеш 0 е хашот на неговите поврзани деца, разгранува Хеш 0-0 и Хеш 0-1.

Примерот погоре е најчестата и едноставна форма на дрво Меркл познато како Бинарно Меркл дрво. Како што можете да видите, постои врвен хаш кој е хаш на целото дрво, познат како корен хаш. Во суштина, Merkle дрвјата се структура на податоци што може да земе „n“ број на хашови и да го претстави со еден хаш.

Структурата на дрвото овозможува ефикасно мапирање на произволно големи количини на податоци и овозможува лесно идентификација каде се случуваат промените во тие податоци. Овој концепт му овозможува на Меркл докази, со кои некој може да потврди дека хаширањето на податоците е конзистентно до стеблото и во правилната позиција без да мора да го погледне целиот сет на хашови.

Наместо тоа, тие можат да потврдат дека делот од податоците е конзистентен со коренскиот хаш со само проверка на мало подмножество од хашовите наместо целото множество податоци.

Сè додека root хашот е јавно познат и доверлив, можно е секој што сака да направи пребарување на клучна вредност во базата на податоци да користи Merkle доказ за да ја потврди позицијата и интегритетот на дел од податоците во базата на податоци што има одреден корен.

Кога коренот хаш е достапен, хаш дрвото може да се прими од кој било недоверлив извор и една гранка од дрвото може да се преземе во исто време со итна проверка на интегритетот на податоците, дури и ако целото стебло сè уште не е достапно.

Една од најважните придобивки на структурата на дрвото Merkle е можноста за автентичност на произволно големи групи на податоци преку сличен механизам за хеширање што се користи за проверка на многу помали количини на податоци.

Дрвото е поволно за дистрибуција на големи групи на податоци во податливи помали делови каде што бариерата за верификација на интегритетот е значително намалена и покрај вкупната поголема големина на податоци.

Коренот хаш може да се користи како отпечаток од прст за цела група податоци, вклучувајќи и цела база на податоци или претставување на целата состојба на блокчејн. Во следните делови, ќе разговараме за тоа како Bitcoin и другите системи ги имплементираат дрвјата Merkle.


Меркл дрвја во Биткоин

Криптографската хаш функција што ја користи Биткоин е алгоритамот SHA-256. Ова значи „Алгоритам за безбедно хаширање“, чиј излез е фиксна должина од 256 бита. Основната функција на дрвјата Меркл во Биткоин е да складира, и на крајот да ги исече трансакциите во секој блок.

Како што споменавме порано, блоковите во блокчејн се поврзани преку хашови од претходниот блок. Во Bitcoin, секој блок ги содржи сите трансакции во тој блок, како и заглавието на блокот што се состои од:

  • Блокирај го бројот на верзијата
  • Претходен блок хаш
  • Временската ознака
  • Целна тешкотија во рударството
  • Нонце
  • Merkle Root Hash

Сликата подолу е од белата книга на Биткоин и илустрира како дрвото Меркл се вклопува во секој блок.

Дрво Меркл

Трансакциите се вклучени во блокови од страна на рударите и се хашираат како дел од дрвото Merkle, што доведува до коренот Merkle што е зачуван во заглавието на блокот. Овој дизајн има голем број на различни предности.

Најзначајно, како што е наведено во белата книга, ова овозможува постоење на јазли за верификација на едноставни плаќања (SPV), познати и како „лесни клиенти“. Овие јазли не мора да го преземаат целиот блок-синџир на Биткоин, само блок-заглавијата на најдолгиот синџир.

SPV-јазлите може да го постигнат ова со барање на нивните врснички јазли додека не се уверат дека складираните блок заглавија на кои работат се дел од најдолгиот синџир. SPV-јазол може потоа да го одреди статусот на трансакцијата со користење на доказот Merkle за да ја мапира трансакцијата на одредено Merkle дрво со соодветниот корен хаш на Merkle дрвото во заглавие на блок што е дел од најдолгиот синџир.

Дополнително, имплементацијата на Биткоин на дрвјата Меркл овозможува кастрење на блокчејнот со цел да се заштеди простор. Ова е резултат на тоа што само коренскиот хаш е зачуван во заглавието на блокот, затоа, старите блокови може да се исечат со отстранување на непотребните гранки од дрвото Меркл, додека само да се зачуваат оние потребни за доказот на Меркл.


Имплементација на Merkle Trees во други блокчејн и системи

Иако Биткоинот беше првиот блокчејн кој имплементира Merkle дрвја, многу други блокчејн имплементираат слични структури на Merkle дрво или дури и посложени верзии.

Понатаму, имплементацијата на дрвото Merkle не е ограничена само на блокчејнови и се применува на различни други системи.

Ethereum, како друга најпрепознатлива криптовалута, е исто така одличен пример за различна имплементација на дрвото Merkle. Бидејќи Ethereum е комплетен туринг како платформа за градење многу посложени апликации, тој користи покомплексна верзија на дрвото Merkle наречена Merkle Patricia Tree, кое всушност е 3 одделни Merkle дрвја што се користат за три вида објекти. Можете да дознаете повеќе за овие дрвја овде.

Конечно, дрвјата Merkle се важна компонента на системите за контрола на дистрибуирани верзии како што се Git и IPFS. Нивната способност лесно да се обезбеди и да се потврди интегритетот на податоците споделени помеѓу компјутерите во формат P2P ги прави непроценливи за овие системи.


Заклучок

Дрвјата Меркл се составен дел на блокчејновите и ефективно им овозможуваат да функционираат со докажлива непроменливост и интегритет на трансакцијата.

Разбирањето на улогата што тие ја играат во дистрибуираните мрежи и нивната основна технологија на криптографски хаш функции е од клучно значење за разбирање на основните концепти во криптовалутите додека тие продолжуваат да се развиваат во поголеми и посложени системи.

Извор: https://blockonomi.com/merkle-tree/