Генератор и визуализатор дерева Меркла

ДанныеРазработчикБезопасность
Реклама · УДАЛИТЬ?
Как каждый элемент интерпретируется до хеширования.
Что делать, когда на уровне нечетное количество узлов.
Как комбинируются хеши левого и правого потомков перед повторным хешированием.

Корневой хеш Меркля

Схема дерева

Экспорт в JSON

Нажмите на любой узел дерева, чтобы скопировать его хеш. Корневой хеш Меркля — единственный отпечаток всего набора листьев — изменение любого листа приводит к изменению корня.
Реклама · УДАЛИТЬ?

Гид

Генератор и визуализатор дерева Меркля

Генератор и визуализатор дерева Меркла

Вставьте список значений, выберите функцию хеширования и мгновенно увидите визуальное дерево Меркля со всеми промежуточными хешами узлов и конечным корневым хешем. Выберите SHA-256, SHA-1 или Keccak-256 (хеш, используемый в Эфириуме), настройте правило нечетного листа в стиле Биткоина или режим сортировки пар по OpenZeppelin, и экспортируйте полное дерево в формате JSON. Нажмите на любой узел в схеме, чтобы скопировать его хеш в буфер обмена.

Как использовать

  1. Введите свои листья в текстовое поле, по одному значению на строку. Попробуйте кнопку примера для быстрого набора данных.
  2. Выберите функцию хеширования: SHA-256 для общего использования, SHA-1 для устаревших систем или Keccak-256 для корней, совместимых с Эфириумом.
  3. Выберите, как должна интерпретироваться каждая строка: как текст UTF-8 (по умолчанию) или как уже хешированный шестнадцатеричный строка.
  4. Выберите правило нечетного листа и режим сцепления пар, соответствующий протоколу, который вы хотите использовать.
  5. Просмотрите корневой хеш, прокрутите диаграмму SVG и скачайте экспортированный JSON для использования в дальнейших инструментах.

Возможности

  • Три функции хеширования – SHA-256, SHA-1 и Keccak-256 охватывают распространённые случаи использования Биткоина, устаревших систем и Эфириума.
  • Интерактивная диаграмма SVG – Каждый узел можно скопировать по клику; фантомные дублируемые сестры отображаются со штриховой границей, чтобы структура была честной.
  • Стратегии нечетных листьев – Переключайтесь между дублированием последнего (конвенция Биткоина) и повышением последнего (перенос несопоставимого узла без изменений), чтобы соответствовать целевому протоколу.
  • Режим сортировки пар – Включите сортировку перед сцеплением в стиле OpenZeppelin, когда требуется корень, совместимый с популярной библиотекой MerkleProof для Solidity.
  • Ввод шестнадцатеричного хеша – Пропустите хеширование листьев полностью, вставляя шестнадцатеричные хеш-дигиты напрямую, что полезно, когда исходные листья большие или уже канонизированы.
  • Экспорт в формате JSON – Скачайте полную копию каждого уровня, каждого хеша узлов и выбранных параметров для воспроизводимости.

Часто задаваемые вопросы

  1. Что такое дерево Меркля?

    Дерево Меркля — это двоичное дерево криптографических хешей. Листья — хеши входных данных, а каждый родительский узел — хеш конкатенации его двух детей. Единственный хеш в вершине — корневой хеш Меркля — является отпечатком всего набора данных: изменение любого листа приводит к изменению корня. Деревья Меркля позволяют доказать, что определённое значение принадлежит набору, предоставляя только логарифмическое количество сестринских хешей (доказательство Меркля), что делает их основой для блоков Биткоина, состояния Эфириума, коммитов Git и журналов прозрачности сертификатов.

  2. Почему Биткоин дублирует последний хеш при нечетном количестве узлов на уровне?

    Чтобы сохранить строго двоичную структуру, Биткоин дополняет уровни с нечетным количеством узлов дублированием правого хеша, чтобы он мог быть сопоставлен с самим собой. Это простое решение, но вводит известную проблему второго предварительного хеширования (CVE-2012-2459), при которой атакующий может иногда создать другой набор листьев, который даст тот же корень. Современные конструкции предпочитают правило «повышения» — перенос несопоставимого хеша без изменений — или использование доменной разделяющей метки между внутренними и листовыми хешами, чтобы закрыть этот разрыв.

  3. Как Keccak-256 отличается от SHA-256 и SHA3-256?

    Keccak-256 — это первоначальное построение в виде пузырька, которое победило в конкурсе NIST для SHA-3. Перед стандартизацией NIST изменил правило заполнения, создав SHA3-256, который несовместим по байтам с предварительным Keccak-256. Эфириум закрепил оригинальный Keccak-256 до изменения, поэтому функция 'keccak256' в Solidity не совпадает с функцией SHA3-256. SHA-256 относится к несвязанной семье SHA-2 и использует конструкцию Меркля-Дамгård; она имеет только схожее название.

  4. Почему некоторые библиотеки Меркля сортируют пару перед хешированием?

    Сортировка левого и правого хешей перед конкатенацией делает хеш родительского узла независимым от того, какой из детей является «левым» и какой — «правым». Это означает, что доказательство Меркля требует только сестринских хешей, а не направляющих битов, что делает доказательства на цепи на 30% меньше и значительно упрощает контракт-проверяющий. Библиотека MerkleProof.sol от OpenZeppelin использует этот стандарт; классические блоки Биткоина и Эфириума не используют его. Сортированный вариант чаще всего встречается в списках для аirdrop, в генерации решений и других внецепных обязательств.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?