0Pricing
Cryptology Academy · Урок

Деревья Меркла: целостность транзакций в большом масштабе

Постройте деревья Меркла и эффективно создавайте доказательства включения

«Деревья Меркла: целостность транзакций в большом масштабе» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Проблема: эффективная проверка транзакций

Блок Биткоина содержит около 2000 транзакций. Чтобы доказать включение транзакции T, не загружая все 2000 транзакций, нужно компактное доказательство. Деревья Меркла решают эту задачу: размер доказательства равен O(log n) хешей вместо O(n) транзакций.

Построение дерева Меркла

Листья: SHA256d (двойной SHA256) каждой транзакции. Родительский узел: SHA256d(left_child_hash || right_child_hash). Повторяйте процесс, пока не останется один корневой хеш. Если число узлов нечётное, продублируйте последний узел. Корень — это корень Меркла, сохранённый в заголовке блока (32 байта).

Корень Меркла на Python

import hashlib def sha256d(x): return hashlib.sha256(hashlib.sha256(x).digest()).digest() def merkle_root(txids): if len(txids)%2: txids.append(txids[-1]) while len(txids)>1: txids=[sha256d(txids[i]+txids[i+1]) for i in range(0,len(txids),2)] return txids[0].hex()

Доказательство Меркла (доказательство включения)

Чтобы доказать, что транзакция T находится на позиции i, предоставьте хеши соседних узлов на каждом уровне — от листа T до корня (O(log n) хешей). Проверяющий пересчитывает корень по T и пути соседних узлов. Если вычисленный корень совпадает с корнем Меркла в заголовке блока, включение T доказано.

Пример размера доказательства

1024 транзакции → доказательство Меркла = 10 хешей = 320 байт. Полный блок = ~1 MB. Клиенты SPV загружают только заголовок размером 80 байт и 320-байтовое доказательство Меркла для каждой интересующей их транзакции — экономия пропускной способности 99.97% по сравнению с загрузкой полного блока.

Обнаружение изменений

Если меняется любая транзакция в дереве, меняется хеш её листа, а затем и корень Меркла. Изменённый корень больше не совпадает с заголовком блока, защищённым PoW. Любое изменение можно обнаружить, вычислив корень по транзакциям.

Префиксное дерево Меркла — Патрисия (Эфириум)

Эфириум расширяет деревья Меркла с помощью префиксных деревьев — это шестнадцатерично кодированное компактное префиксное дерево, в котором каждый узел хешируется по Мерклу. Используется для дерева состояния (балансы аккаунтов), дерева транзакций и дерева квитанций. Позволяет эффективно доказывать состояние аккаунта без данных полного узла.

Диапазон гор Меркла

Диапазон гор Меркла (MMR) — это добавляемая структура Меркла для данных, организованных подобно журналу. Новые элементы добавляются в конец, а вершины (корни поддеревьев размера, равного степени двойки) поддерживаются в актуальном состоянии. Используется в Grin/MimbleWimble и ZCash для эффективных компактных доказательств над журналом, в который можно только добавлять записи.

Деревья Веркле

Согласно плану развития Эфириума, деревья Веркле заменят деревья Меркла (EIP-6800): вместо хешей используются векторные обязательства (полиномиальные обязательства KZG). Размер доказательства: O(1) вместо O(log n) у Меркла. Это позволяет клиентам без состояния проверять состояние, не храня полное префиксное дерево.

Прозрачность сертификатов как журнал Меркла

Certificate Transparency (RFC 6962) использует журнал Меркла, в который можно только добавлять записи: каждый сертификат, выданный CA, является листом. Доказательства включения подтверждают, что сертификат был занесён в журнал. Доказательства согласованности подтверждают, что журнал допускает только добавление записей, без удаления или вставки. Браузеры проверяют подписанные отметки сертификатов через этот журнал.

Модель объектов Git

Деревья Git (снимки каталогов) являются деревьями Меркла: каждый узел дерева хеширует объекты содержимого файлов и поддеревья. Хеш коммита однозначно идентифицирует состояние всей кодовой базы. Поэтому команда git checkout всегда восстанавливает ровно те же файлы.

Быстрая проверка

Сколько хешей требуется в доказательстве Меркла, чтобы доказать включение элемента в дерево с 1024 листьями?

Итоги

Деревья Меркла обеспечивают доказательства включения размера O(log n). Биткоин хранит корень Меркла в заголовках блоков, а клиенты SPV используют доказательства. Эфириум расширяет этот подход до префиксных деревьев Меркла — Патрисия. Деревья Веркле заменят деревья Меркла и обеспечат доказательства размера O(1). Далее: майнинг с доказательством выполнения работы и сложность.

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

Урок «Деревья Меркла: целостность транзакций в большом масштабе» бесплатный?

Да — полный текст урока «Деревья Меркла: целостность транзакций в большом масштабе» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Деревья Меркла: целостность транзакций в большом масштабе»?

Постройте деревья Меркла и эффективно создавайте доказательства включения Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Деревья Меркла: целостность транзакций в большом масштабе»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

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

Все уроки этого курса

  1. Цепочки хешей и связывание блоков
  2. Деревья Меркла: целостность транзакций в большом масштабе
  3. Доказательство работы: майнинг и настройка сложности
  4. Скрипт Bitcoin и проверка подписей UTXO
← Назад к Cryptology Academy