Дерево Меркла дозволяє біржі опублікувати одне коротке значення, яке разом зв'язує її з кожним користувацьким балансом. Кожен користувач стає листком, листки попарно хешуються вгору, доки не лишиться єдиний корінь, а будь-яка зміна де завгодно нижче дає цілком інший корінь. Тому опублікований корінь є зобов'язанням, а не обіцянкою, і тому ви доводите своє включення, не бачачи чужих даних.
Яку задачу розв'язує дерево Меркла
Біржа хоче сказати щось про мільйони балансів, не публікуючи їх. Публікація списку розкриє кожного клієнта; публікація підсумкової суми не доводить нічого, бо суму можна зібрати з будь-якого набору чисел.
Потрібне значення, достатньо коротке для публікації, виведене з кожного балансу і несумісне з будь-яким іншим набором балансів. Тоді біржа публічно зв'язує себе з усім набором, а кожен користувач окремо перевіряє, що його рядок входив у те, з чим вона себе зв'язала.
Саме цю роботу й виконує дерево Меркла, і саме тому беруть таку структуру, а не простий хеш склеєного списку. Плаский хеш теж змінювався б за зміни даних, але змусив би вас тримати при собі кожен баланс, щоб його перевірити, а це руйнує вимогу приватності.
Частини та їхні назви
| Термін | Що це | Чому важливо |
|---|---|---|
| Листок | Хеш знімка балансів одного користувача | Це той рядок, який ви перевіряєте особисто |
| Текст листка | Точний рядок, який хешують у листок | Відмінність у форматі змінює хеш |
| Сусід | Другий хеш, потрібний на кожному рівні | Саме вони лежать у вашому файлі доказу |
| Шлях доказу | Сусіди від вашого листка до кореня | Він короткий навіть за мільйонів користувачів |
| Корінь | Єдиний хеш на вершині | Це і є значення, яке публікує біржа |
Другий рядок варто прочитати двічі. Листок є хешем конкретного рядка, і якщо рядок зібрати інакше, хеш буде іншим: тому версію алгоритму зобов'язані публікувати разом із коренем.
Як будується листок
Листок — це хеш невеликого фрагмента тексту, що описує один рахунок на момент знімка. Цей текст називає версію алгоритму, ідентифікатор розкриття, до якого він належить, ідентифікатор запису для рахунку та баланси в охоплених активах.
Два правила форматування роблять більше, ніж здається. Баланси записуються з фіксованою кількістю знаків після коми, тож та сама сума завжди дає той самий текст, а активи йдуть у фіксованому порядку, а не в тому, у якому їх видала система. Без будь-якого з цих правил дві реалізації хешували б один рахунок по-різному, і незалежна перевірка падала б із причин, не пов'язаних із чесністю.
Рахунок позначається ідентифікатором запису, а не чимось про вас. Саме це дозволяє публікувати структуру дерева, лишаючись неінформативним щодо того, хто в ньому. Поля, що публікуються навколо, розібрано в статті як читати звіт про доказ резервів.
Як дерево росте вгору
Листки з'єднуються парами. Два хеші складають в один рядок, цей рядок хешується і дає вузол рівнем вище; такі вузли з'єднуються попарно тим самим способом, і процес повторюється, доки не лишиться одне значення.
Порядок важить на кожному з'єднанні, і саме ця деталь підводить тих, хто пише верифікатор. У кожного кроку є лівий і правий бік, і хешування їх у зворотному порядку дає інший результат. Тому файл доказу записує не лише який сусідній хеш брати на кожному рівні, а й з якого він боку, і ваш верифікатор зобов'язаний дотримуватися цієї вказівки, а не сортувати два значення.
Оскільки дерево на кожному рівні зменшується вдвічі, шлях від будь-якого листка до кореня короткий. Набір із мільйонів рахунків дає доказ із кількох десятків хешів: тому така перевірка виконується на телефоні миттєво і не потребує завантаження всього масиву.
Чому підміну видно
Хеш-функції мають властивість: мала зміна на вході дає ніяк не пов'язаний вихід. Змініть один баланс на мінімально представну величину, і його листок зміниться повністю, зміниться його батьківський вузол, і разом з ним зміниться кожен вузол на шляху до кореня.
Саме це перетворює публікацію на зобов'язання. Щойно корінь став публічним, біржа не може виправити баланс, вставити рахунок чи прибрати його, не отримавши іншого кореня. Вона не може зробити це тихо і не може зробити це для одного користувача, не зламавши перевірку всім, чий шлях іде через ту саму гілку.
Зобов'язання зв'язує лише тоді, коли корінь було опубліковано раніше, ніж комусь знадобилося, щоб він виявився хибним: тому момент публікації і публічний запис кореня важать не менше за саму математику. Як прогнати порівняння самому, викладено в статті як перевірити доказ резервів.
Чому сусіди лишаються приватними
Ваш шлях доказу містить хеші інших частин дерева, а хеш незворотний у дані, з яких отриманий. Ви дізнаєтеся, що сусід існує і який у нього хеш; ви не дізнаєтеся, чиї баланси під ним і які вони.
Саме ця асиметрія робить структуру придатною для задачі. Кожен користувач підтверджує власне включення, і жоден не дізнається нічого про іншого, притому що біржі не треба нікому довіряти і не треба публікувати список клієнтів.
Реалізації зазвичай посилюють це ще й тим, що виконують перевірку локально, а не надсилають ваші дані назад на сервер. Тут довід приватності й довід перевірності вказують в один бік, що трапляється рідко і варте уваги.
Де структура перестає допомагати
Дерево Меркла доводить членство в множині. Воно каже, що ваш рядок був у дереві, чий корінь опубліковано, і не каже рівно нічого про те, чи була та множина правильною.
Звідси прямо випливають три обмеження. Дерево не скаже, чи всі рахунки було включено, бо пропущений рахунок не лишає сліду для тих, хто лишився. Воно не скаже, чи існують активи: це окреме ончейн-твердження, а не властивість структури. І воно нічого не скаже про зобов'язання понад баланси, що ввійшли, про що й ідеться в статті доказ резервів і зобов'язання.
Ніщо з цього не є вадою криптографії. Це межа того, про що можна просити доказ членства, і знання межі не дає продавати структуру дорожче, ніж вона варта.
Підсумок
Дерево Меркла перетворює мільйони балансів на одне публіковне значення і дає кожному користувачеві короткий шлях, що доводить: його рядок під ним. Листки — це хеші записів фіксованого формату, вузли — хеші пар, а порядок склеювання на кожному рівні є частиною специфікації, а не дрібницею.
Його сила в тому, що підміну після публікації неможливо приховати, а включення доводиться, нікого не розкриваючи. Його межа в тому, що доводиться лише членство: повнота множини, існування активів і розмір зобов'язань лежать поза деревом. Читайте далі матеріали Bitbase Academy.
Застереження: Ця стаття є освітнім матеріалом Bitbase Academy і надається лише для інформації. Вона не є інвестиційною, торговою, податковою чи фінансовою порадою. Криптоактиви волатильні — оцінюйте ризики самостійно. Написано станом на вересень 2026 року; орієнтуйтеся на найновішу офіційну інформацію.
Джерела
[1] Bitbase, «Доказ резервів» — щомісячне розкриття, корінь Меркла та відкритий верифікатор www.bitbase.com






