Перейти к содержанию

Дерево Меркла

Дерево Меркла фиксирует упорядоченные данные одним корневым хешем и позволяет делать компактные доказательства включения без передачи всего набора.

Обновлено

Только в образовательных целях; это не инвестиционная рекомендация. Инвестиции могут привести к убыткам.

Краткий ответ

Дерево Меркла хеширует каждый элемент данных в лист, многократно объединяет соседние хеши и получает один корень Меркла. Корень компактно фиксирует листья, их порядок и правила хеширования.

Доказательство Меркла содержит хеш соседа на каждом уровне для одного листа. Проверяющий пересчитывает путь до корня и принимает включение только при совпадении с доверенным корнем, поэтому остальные листья не нужны.

Фиксация относится к представлению данных, а не к их истинности. Совпадение корня не доказывает точность источника, доступность данных или безопасность контракта, моста, оракула и рынка. Нужно получить корень и лист через аутентифицированный протокол и понимать разделение доменов, порядок и правила нечётных листьев.

Деревья Меркла применяются по-разному. Bitcoin помещает корень транзакций в заголовок каждого блока; Ethereum использует модифицированное дерево Меркла–Патриции для состояния и других аутентифицированных структур. Кодировки, форматы доказательств, обновления и предположения о безопасности отличаются.

Как это работает

Сначала задаются детерминированное кодирование листа и хеш-функция. Затем хешируются листья, пары дочерних узлов объединяются в родителей, и процесс повторяется до одного корня. Если позицию нельзя вывести из протокола, доказательство должно содержать направление или позицию листа.

В сбалансированном двоичном дереве доказательство одного из 1024 листьев требует примерно 10 соседних хешей: каждый уровень удваивает покрываемый диапазон. Размер также зависит от формы дерева, длины хеша, политики дубликатов и мультидоказательств или сжатия.

Основную связь можно записать как parent = Hash(left || right) и root = fold(parent, leaves). Это схема: протокол может добавлять префиксы, использовать другую арность или кодировать ключи в trie. Доказательство показывает согласованность с конструкцией, но не аутентифицирует корень, которому проверяющий не доверяет независимо.

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

Пример

Пусть блок содержит 1024 транзакции и использует двоичное дерево. Транзакции достаточно приложить около 10 соседних хешей вместо остальных 1023 транзакций. Нужны также заголовок блока и правила кодирования и позиции.

При сбое проверьте байты листа, порядок байтов, заполнение, источник корня и состояние блока. Доказательство для незавершённого или устаревшего корня может быть технически верным, но уже не отражать каноническое состояние цепи.

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

Риски

Технические риски включают неоднозначную кодировку, неправильное применение хеша, слабости второй прообразной атаки или коллизий, неверный порядок соседей и принятие ненадёжного или устаревшего корня. Разделение доменов требует единообразной реализации.

Операционные риски находятся за пределами вычисления хеша. Мост, оракул, секвенсор, биржа или администратор могут опубликовать, задержать, подвергнуть цензуре или заменить корень; сбой доступности может скрыть лист или доказательство; реорганизация может отменить доказательство старого блока.

До использования доказательства выясните, кто аутентифицирует корень, как проверяются свежесть и финальность, как обрабатываются отсутствующие или нечётные листья и могут ли пользователи восстановить данные самостоятельно. Ограничивайте разрешения и экспозицию, если убыток нельзя оценить.

Распространённые заблуждения

Миф 1: Совпадение корня доказывает истинность данных

Оно доказывает только согласованность переданного листа с зафиксированным корнем по заданной конструкции. Ошибочное значение оракула будет проверено так же добросовестно.

Миф 2: Доказательство Меркла делает всю систему недоверительной

Проверяющий всё ещё доверяет хешу, кодировке, пути аутентификации и системе поставки данных. Консенсус, финальность, доступность и управление остаются отдельными вопросами.

Миф 3: Все блокчейны используют одно дерево Меркла

Дерево транзакций Bitcoin, дерево Меркла–Патриции Ethereum и прикладные деревья различаются по структуре и правилам. Формат нельзя автоматически перенести.

Миф 4: Короткое доказательство гарантирует дешёвую и безопасную транзакцию

Размер уменьшает передачу, но газ проверки, чтение хранилища, перегрузка, ошибки контракта и риски вывода или ликвидации могут быть важнее.

Связанные темы

Источники

Навигация

Поиск по вики...