
Merkle hash — це процес групування даних, хешування кожного шару та створення одного root hash. Root hash є “майстерним відбитком” для всього набору даних. Це дозволяє швидко перевірити, чи включено конкретний елемент даних і чи він не був змінений.
У блокчейн-системах дані зазвичай складаються з пакетів транзакцій або записів рахунків. Використовуючи Merkle hashing, система надсилає лише невелику частину path hashes, що стосуються цільових даних, і це дає змогу самостійно перевірити їх включення.
Головна цінність Merkle hash — це ефективна перевірка. Це дозволяє легким вузлам і користувачам перевіряти включення транзакції без завантаження всього набору даних. Це значно знижує вимоги до пропускної здатності, пам’яті та обчислювальних ресурсів.
Merkle hashing також забезпечує структурований захист від підробок: будь-яка зміна leaf або проміжного вузла змінює root hash, і це дозволяє виявити невідповідності. Така властивість важлива для прозорості та аудиту у відкритих мережах.
Merkle hash базується на хеш-функціях. Хеш-функція перетворює дані на короткий, фіксованої довжини “відбиток даних”. Вона незворотна, і навіть мінімальні зміни у вхідних даних суттєво змінюють результат.
Побудова починається з хешування кожного елемента даних у leaf hash. Далі сусідні leaf hashes об’єднують і хешують разом для формування батьківських вузлів. Процес повторюється шар за шаром, поки не залишиться лише один root hash на вершині. Вся структура називається Merkle tree, а її верхній вузол — Merkle root.
Щоб перевірити, чи включено конкретний елемент даних, потрібен цільовий leaf hash і набір sibling hashes по шляху — це називають Merkle path або Merkle proof. Послідовно поєднуючи ці хеші до root, якщо обчислений root співпадає з авторитетним, включення підтверджено.
У Bitcoin кожен блок містить кілька транзакцій. Транзакції агрегують у Merkle root за допомогою Merkle hashing, який вбудовують у заголовок блоку. Заголовок блоку є дайджестом для консенсусу мережі, що дозволяє легким вузлам слідкувати за ланцюгом, завантажуючи лише заголовки блоків.
Заголовок блоку Bitcoin має розмір близько 80 байт і містить: версію, хеш попереднього блоку, час, ціль складності, nonce та Merkle root (джерело: протокол Bitcoin; використовується станом на 2025 рік). З Merkle root можна перевірити включення транзакції за її Merkle path, порівнюючи з root у заголовку блоку.
Перевірка проста: потрібно відновити шлях від транзакції до root hash за допомогою path hashes і порівняти його з авторитетним root.
Крок 1: Отримайте сирі дані транзакції або її leaf hash. Leaf hash — це хеш даних транзакції, вузол нижнього рівня.
Крок 2: Підготуйте відповідний Merkle path із sibling hashes на кожному шарі. Для кожного кроку визначте порядок об’єднання: зліва направо або справа наліво.
Крок 3: Послідовно об’єднуйте та хешуйте по шляху до root hash.
Крок 4: Порівняйте обчислений root hash із root із заголовка блоку або іншого авторитетного джерела. Якщо вони співпадають, транзакцію включено; якщо ні — є розбіжність у даних або шляху.
Хеш-функція — це базовий інструмент для перетворення даних на відбиток. Merkle hashing — це складна структура, що поєднує багато таких відбитків в один через повторюване хешування. Перше — це одноразове перетворення; друге — ієрархічне агрегування.
Безпека залежить від двох аспектів: стійкості до колізій і неможливості підробки самої хеш-функції, а також правильного порядку об’єднання та стандартів у структурі Merkle під час побудови та перевірки.
SPV — це Simplified Payment Verification, тобто легкі вузли завантажують лише заголовки блоків замість усіх транзакцій. Оскільки заголовки містять Merkle roots, SPV-вузли можуть використовувати Merkle path для порівняння з заголовком і підтвердження включення транзакції.
Це дозволяє легким клієнтам, наприклад мобільним гаманцям, виконувати критичну перевірку навіть з обмеженими ресурсами, підвищуючи зручність і децентралізовану участь.
У централізованих біржових Proof of Reserves записи активів користувачів (наприклад, комбінації ідентифікаторів рахунків і балансів) використовують як leaves для побудови Merkle tree, а root hash публікують. Користувачі можуть завантажити власний leaf hash і Merkle path для самостійної перевірки, що їхні активи включені у загальне дерево.
На сторінці Proof of Reserves від Gate користувачам надають матеріали для підтвердження активів (leaf hash і path). Головне для користувача — перевірити “включення”, тобто наявність запису у дереві. Важливо: Merkle hashing підтверджує лише включення, а не існування позабіржових активів чи відсутність подвійного врахування; потрібні незалежні аудити та криптографічні підписи.
Merkle hashing стискає великі об’єми даних у один root hash, що публічно перевіряється через ієрархічне хешування, дозволяючи будь-кому перевірити включення з мінімальними витратами. Його широко використовують у заголовках блоків Bitcoin, SPV-легких вузлах і системах біржі Proof of Reserves. На практиці важливо обирати хеш-функцію, стандарти побудови дерева та проводити зовнішні аудити — не плутайте “включення” з “автентичністю”.
Так. Merkle hashing створює перевіряємий шлях від транзакції до заголовка блоку, дозволяючи підтвердити включення без завантаження всього блоку. Цей процес називають SPV-перевіркою — його застосовують легкі гаманці і мобільні гаманці, що економить місце й забезпечує безпеку.
Merkle tree використовує пошарове хешування. Зміна транзакції нижнього рівня змінює хеш її батьківського вузла; ця зміна передається вгору по кожному шару, змінюючи Merkle root на вершині. Це робить підробку легко виявленою — ключовий антикорупційний механізм у блокчейні.
Gate організовує активи користувачів у Merkle tree та регулярно публікує root, щоб кожен міг це перевірити. Ви можете використати свій Merkle path, щоб довести, що ваші активи включені до загальних резервів Gate — це запобігає прихованим або подвійним записам. Такий підхід робить резерви біржі прозорими та перевіряємими.
Звичайна хеш-функція перевіряє цілісність окремих даних; Merkle tree забезпечує пошарову структуру хешування, що дозволяє перевірити і цілісність, і включення для великих наборів даних одночасно. Лише Merkle tree може створювати proof paths для ефективних перевірок існування — стандартні хеші цього не можуть.
Потрібно лише близько 14 хеш-обчислень — оскільки глибина Merkle tree зростає логарифмічно із кількістю транзакцій (log2). У порівнянні з перевіркою 10 000 записів окремо, перевірка Merkle path надзвичайно ефективна — ця ефективність дозволяє мобільним гаманцям швидко синхронізуватися з блокчейном без затримок.


