Што такое дрэва Меркле? Кіраўніцтва для пачаткоўцаў па гэтым кампаненце Blockchain

Дрэвы Merkle з'яўляюцца фундаментальным кампанентам блокчейнов, які ляжыць у аснове іх функцыянальнасці. Яны дазваляюць эфектыўна і бяспечна правяраць вялікія структуры даных, а ў выпадку блокчейнов - патэнцыйна бязмежныя наборы даных.

Укараненне дрэў Меркла ў блокчейны мае некалькі эфектаў. Гэта дазваляе ім маштабаваць, а таксама забяспечвае архітэктуру на аснове хэшаў для падтрымання цэласнасці даных і трывіяльны спосаб праверкі цэласнасці даных.

Крыптаграфічныя хэш-функцыі - гэта асноўная тэхналогія, якая дазваляе працаваць дрэвам Merkle, таму спачатку важна зразумець, што такое крыптаграфічныя хэш-функцыі.

Хуткі вердыкт: Дрэвы Merkle - гэта структуры даных, якія складаюцца з крыптаграфічных хэшаў, якія дазваляюць эфектыўна правяраць цэласнасць і адлюстроўваць вялікія наборы даных, што робіць іх неад'емным кампанентам такіх сістэм, як блокчейны і размеркаваны кантроль версій.


Факты

ключавыя момантыАпісанне
Крыптаграфічныя хэш-функцыіХэш-функцыі, якія прымаюць увод любога памеру і выводзяць хэш-значэнне фіксаванай даўжыні. Выкарыстоўваецца ў дрэвах Меркле.
Структура дрэва MerkleДрэвападобная структура даных, у якой кожны няліставы вузел з'яўляецца хэшам сваіх даччыных вузлоў. Дазваляе эфектыўнае адлюстраванне і праверку вялікіх набораў даных.
Каранёвы хэшХэш у верхняй частцы дрэва Merkle, які прадстаўляе хэш усяго дрэва. Дзейнічае як адбітак пальца для поўнага набору даных.
Доказы МерклаДазволіць праверку цэласнасці даных і становішча ў дрэве без неабходнасці поўнага набору даных, толькі каранёвага хэша.
Рэалізацыя ў BitcoinДрэвы Merkle захоўваюць транзакцыі ў блоках. Каранёвы хэш, які захоўваецца ў загалоўку блока, дазваляе вузлам SPV правяраць транзакцыі.
Іншыя рэалізацыі блокчейнаВыкарыстоўваецца ў многіх блокчейнах, такіх як Ethereum, які выкарыстоўвае больш складаныя Merkle Patricia Trees.
Размеркаваныя сістэмыДазволіць сістэмам кантролю версій, такім як Git і IPFS, лёгка правяраць дадзеныя, якія абагульваюцца паміж аднагодкамі.

Крыптаграфічныя хэш-функцыі

Прасцей кажучы, хэш-функцыя - гэта любая функцыя, якая выкарыстоўваецца для адлюстравання даных адвольнага памеру (уваходных дадзеных) у выходныя дадзеныя фіксаванага памеру. Да ўваходных даных прымяняецца алгарытм хэшавання, а выніковы выхад з фіксаванай даўжынёй называецца хэшам.

Многія алгарытмы хэшавання шырока даступныя і могуць быць выбраны ў залежнасці ад вашых патрэбаў.

Атрыманы хэш з адвольнага ўводу не толькі мае фіксаваную даўжыню, ён таксама цалкам унікальны для ўводу, а сама функцыя з'яўляецца дэтэрмінаванай. Гэта значыць, незалежна ад таго, колькі разоў вы запускаеце функцыю на адным і тым жа ўваходзе, выхад заўсёды будзе аднолькавым.

Напрыклад, калі ў вас ёсць наступныя наборы даных у якасці ўваходных дадзеных, выніковыя выхады будуць унікальнымі для кожнага ўваходу. Звярніце ўвагу, як у другім і трэцім прыкладах, хаця розніца паміж уваходнымі дадзенымі складае толькі адно слова, выніковыя выхадныя дадзеныя зусім розныя.

Гэта вельмі важна, бо дазваляе «адбіткі пальцаў» дадзеных.

Крыптаграфічная хэш-функцыя, выява з Вікіпедыі

Паколькі даўжыня вываду (хэш-сума ў прыкладзе) заўсёды такая ж, як вызначана выкарыстоўваным алгарытмам хэшавання, велізарныя аб'ёмы даных можна ідэнтыфікаваць выключна праз выніковы хэш.

У сістэмах, якія змяшчаюць велізарныя аб'ёмы даных, перавагі магчымасці захоўвання і ідэнтыфікацыі даных з выхадам фіксаванай даўжыні могуць значна зэканоміць сховішча і павысіць эфектыўнасць.

У блокчейнах алгарытмы хэшавання выкарыстоўваюцца для вызначэння стану блокчейна.

Блокчейны - гэта звязаныя спісы, якія змяшчаюць дадзеныя і хэш-указальнік, які паказвае на папярэдні блок, ствараючы ланцужок злучаных блокаў, адсюль і назва «блокчейн».

Кожны блок звязаны адзін з адным праз хэш-паказальнік, які з'яўляецца хэшам даных унутры папярэдняга блока разам з адрасам папярэдняга блока. Звязваючы блокі даных у гэтым фармаце, кожны выніковы хэш папярэдняга блока адлюстроўвае ўвесь стан блокчейна, паколькі ўсе хэшаваныя даныя папярэдніх блокаў хэшуюцца ў адзін хэш.

Гэта прадстаўлена (у выпадку алгарытму SHA-256) такім высновай (хэшам):

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Хэш вышэй - гэта адбітак усяго стану блокчейна перад ім. Стан блокчейна да новага блока (у выглядзе хэшаваных даных) з'яўляецца ўваходам, а выніковы хэш - выхадам.

Нягледзячы на ​​тое, што можна выкарыстоўваць крыптаграфічныя хэшы без дрэў Merkle, гэта надзвычай неэфектыўна і не маштабуецца. Выкарыстанне хэшаў для захоўвання даных у блоку ў серыйным фармаце займае шмат часу і грувастка.

Як вы ўбачыце, дрэвы Merkle дазваляюць трывіяльна раздзяляць цэласнасць даных, а таксама адлюстроўваць гэтыя даныя ва ўсім дрэве з дапамогай доказаў Merkle.


Дрэвы Merkle і доказы Merkle

Названыя ў гонар Ральфа Меркла, які запатэнтаваў гэтую канцэпцыю ў 1979 годзе, дрэвы Меркла ў сваёй сутнасці з'яўляюцца дрэвамі структуры даных, у якіх кожны неліставы вузел з'яўляецца хэшам адпаведных даччыных вузлоў.

Ліставыя вузлы з'яўляюцца самым нізкім узроўнем вузлоў у дрэве. Спачатку гэта можа здацца цяжкім для разумення, але калі вы паглядзіце на часта выкарыстоўваную карцінку ніжэй, вам стане нашмат лягчэй зразумець.

Хэш-дрэва

Прыклад бінарнага хэш-дрэва, выява з Вікіпедыі

Важна заўважыць, што неліставыя вузлы або «галінкі» (прадстаўленыя хэшам 0-0 і хэшам 0-1) з левага боку з'яўляюцца хэшамі адпаведных дзяцей L1 і L2. Акрамя таго, звярніце ўвагу на тое, што галіна Hash 0 з'яўляецца хэшам сваіх аб'яднаных дзяцей, галін Hash 0-0 і Hash 0-1.

Прыведзены вышэй прыклад з'яўляецца найбольш распаўсюджанай і простай формай дрэва Меркла, вядомага як бінарнае дрэва Меркла. Як бачыце, ёсць верхні хэш, які з'яўляецца хэшам усяго дрэва, вядомы як каранёвы хэш. Па сутнасці, дрэвы Merkle - гэта структура даных, якая можа прымаць "n" колькасць хэшаў і прадстаўляць іх адным хэшам.

Структура дрэва дазваляе эфектыўна адлюстроўваць калі заўгодна вялікія аб'ёмы дадзеных і дазваляе лёгка ідэнтыфікаваць, дзе адбываюцца змены ў гэтых дадзеных. Гэтая канцэпцыя дазваляе выкарыстоўваць доказы Merkle, з дапамогай якіх хтосьці можа праверыць, што хэшаванне даных з'яўляецца паслядоўным на ўсім шляху ўверх па дрэве і знаходзіцца ў правільным становішчы без неабходнасці прагляду ўсяго набору хэшаў.

Замест гэтага яны могуць пераканацца, што частка даных адпавядае каранёваму хэшу, правяраючы толькі невялікую падгрупу хэшаў, а не ўвесь набор даных.

Пакуль каранёвы хэш з'яўляецца агульнавядомым і надзейным, кожны, хто хоча зрабіць пошук ключ-значэнне ў базе даных, можа выкарыстоўваць доказ Merkle для праверкі пазіцыі і цэласнасці часткі даных у базе даных, якая мае пэўны корань.

Калі каранёвы хэш даступны, хэш-дрэва можа быць атрымана з любой ненадзейнай крыніцы, і адна галіна дрэва можа быць загружана адначасова з неадкладнай праверкай цэласнасці даных, нават калі ўсё дрэва яшчэ недаступна.

Адной з найбольш важных пераваг дрэвападобнай структуры Merkle з'яўляецца магчымасць аўтэнтыфікацыі адвольна вялікіх набораў даных праз аналагічны механізм хэшавання, які выкарыстоўваецца для праверкі значна меншых аб'ёмаў даных.

Дрэва зручна для размеркавання вялікіх набораў даных на кіраваныя меншыя часткі, дзе бар'ер для праверкі цэласнасці істотна зніжаецца, нягледзячы на ​​агульны большы памер даных.

Каранёвы хэш можна выкарыстоўваць у якасці адбітка пальца для ўсяго набору даных, уключаючы ўсю базу дадзеных або прадстаўляючы ўвесь стан блокчейна. У наступных раздзелах мы абмяркуем, як біткойн і іншыя сістэмы рэалізуюць дрэвы Merkle.


Merkle Trees у біткойнах

Крыптаграфічная хэш-функцыя, якая выкарыстоўваецца ў біткойнах, - гэта алгарытм SHA-256. Гэта расшыфроўваецца як «Бяспечны алгарытм хэшавання», выхад якога мае фіксаваную даўжыню 256 біт. Асноўная функцыя дрэў Merkle ў біткойнах - захоўваць і, у канчатковым выніку, скарачаць транзакцыі ў кожным блоку.

Як згадвалася раней, блокі ў блокчейне злучаюцца праз хэшы папярэдняга блока. У Bitcoin кожны блок змяшчае ўсе транзакцыі ў гэтым блоку, а таксама загаловак блока, які складаецца з:

  • Нумар версіі блока
  • Хэш папярэдняга блока
  • Timestamp
  • Мэта складанасці здабычы
  • Nonce
  • Merkle Root Hash

Малюнак ніжэй узяты з дакумента Bitcoin і ілюструе, як дрэва Merkle змяшчаецца ў кожным блоку.

Меркле Дрэва

Майнеры ўключаюць транзакцыі ў блокі і хэшуюць як частку дрэва Merkle, што вядзе да кораня Merkle, які захоўваецца ў загалоўку блока. Гэтая канструкцыя мае шэраг відавочных пераваг.

У прыватнасці, як паказана ў тэхнічным дакуменце, гэта дазваляе існаваць вузлы простай праверкі аплаты (SPV), таксама вядомыя як «лёгкія кліенты». Гэтыя вузлы не павінны загружаць увесь блокчейн біткойнаў, толькі загалоўкі блокаў самай доўгай ланцужкі.

Вузлы SPV могуць дасягнуць гэтага, запытваючы аднарангавыя вузлы, пакуль яны не пераканаюцца, што захаваныя загалоўкі блокаў, з якімі яны працуюць, з'яўляюцца часткай самай доўгай ланцужкі. Затым вузел SPV можа вызначыць статус транзакцыі, выкарыстоўваючы доказ Merkle, каб адлюстраваць транзакцыю ў пэўным дрэве Merkle з каранёвым хэшам адпаведнага дрэва Merkle у загалоўку блока, які з'яўляецца часткай самай доўгай ланцужкі.

Акрамя таго, рэалізацыя дрэў Merkle у біткойнах дазваляе абрэзаць блокчейн, каб зэканоміць месца. Гэта вынік таго, што ў загалоўку блока захоўваецца толькі каранёвы хэш, таму старыя блокі можна абрэзаць, выдаліўшы непатрэбныя галіны дрэва Merkle, захаваўшы толькі тыя, якія неабходныя для доказу Merkle.


Укараненне дрэў Merkle ў іншых блокчейнах і сістэмах

Нягледзячы на ​​​​тое, што біткойн быў першым блокчейном, які ўкараніў дрэвы Merkle, многія іншыя блокчейны рэалізуюць падобныя структуры дрэва Merkle або нават больш складаныя версіі.

Акрамя таго, рэалізацыя дрэва Merkle не абмяжоўваецца толькі блокчейнами і прымяняецца да мноства іншых сістэм.

Ethereum, з'яўляючыся іншай самай вядомай крыптавалютай, таксама з'яўляецца выдатным прыкладам рэалізацыі іншага дрэва Merkle. Паколькі Ethereum з'яўляецца поўнай Тьюрынгавай платформай для стварэння значна больш складаных прыкладанняў, ён выкарыстоўвае больш складаную версію дрэва Merkle пад назвай Merkle Patricia Tree, якая насамрэч уяўляе сабой 3 асобныя дрэвы Merkle, якія выкарыстоўваюцца для трох тыпаў аб'ектаў. Вы можаце даведацца больш пра гэтыя дрэвы тут.

Нарэшце, дрэвы Merkle з'яўляюцца важным кампанентам размеркаваных сістэм кантролю версій, такіх як Git і IPFS. Іх здольнасць лёгка забяспечваць і правяраць цэласнасць дадзеных, якія перадаюцца паміж кампутарамі ў фармаце P2P, робіць іх неацэннымі для гэтых сістэм.


заключэнне

Дрэвы Merkle з'яўляюцца неад'емным кампанентам блокчейнов і эфектыўна дазваляюць ім функцыянаваць з даказальнай нязменнасцю і цэласнасцю транзакцый.

Разуменне ролі, якую яны адыгрываюць у размеркаваных сетках, і асноўнай тэхналогіі крыптаграфічных хэш-функцый мае вырашальнае значэнне для разумення асноўных паняццяў крыптавалют, паколькі яны працягваюць развівацца ў больш буйныя і складаныя сістэмы.

Крыніца: https://blockonomi.com/merkle-tree/