Краткий пересказ
Еще
Узнавайте содержание статьи и оценивайте рыночные настроения всего за 30 секунд!
Деревья Меркла или хеш-деревья используются вычислительными приложениями в качестве структуры для проверки и синхронизации данных. Их также применяют для более безопасного и эффективного шифрования данных блокчейна Биткоин и других криптовалют.
База данных хеш-деревьев используется для безопасного разделения данных блока и обеспечения того, чтобы они не были потеряны, повреждены или изменены. Этот метод управления данными позволяет проверять конкретные транзакции без загрузки всего блокчейна размером в терабайт. Это надежный, безопасный и криптографический метод работы блокчейна.
В результате падения централизованной биржи FTX многие CEX создали и внедрили дерево Меркла как Proof of Reserves (PoR), чтобы гарантировать пользователям сохранность их данных. В этой статье мы обсудим, что это такое, какова роль хеш-деревьев в блокчейне и как пользователь может подтвердить свои средства с их помощью.
Ральф Меркл, специалист по информатике, известный своими работами по криптографии с открытым ключом, предложил деревья Меркла в статье 1987 года «Цифровая подпись, основанная на обычной функции шифрования». Криптографическое хеширование также было изобретено Мерклом.
Дерево Меркла – это математическая структура данных на основе хеша, которая собирает результаты всех транзакций в блоке. Это метод быстрой проверки точности данных децентрализованным способом. Благодаря своим функциональным возможностям деревья Меркла используются более эффективно в плане шифрования данных блокчейна.
Деревья Меркла часто используются в одноранговых сетях (P2P) из-за необходимости обмена информацией и независимой проверки. Давайте подробнее разберемся в этих деревьях и в том, как они работают.
Дерево Меркла, также известное как хеш-дерево, имеет бинарную структуру. Хеш транзакций в нижней строке называются «ведущими нодами», промежуточные хеши называются «нелистовыми нодами», а хеш в верхней строке называется «корневой нодой». Несмотря на то что большинство реализаций хеш-дерева являются бинарными (каждая нода имеет две дочерних ноды), они также могут иметь гораздо больше дочерних нод.
В структуре дерева Меркла все транзакции группируются в пары. Каждая пара имеет вычисленный хеш, который хранится непосредственно в родительской ноде. Они также группируются в пары, после чего их хеш сохраняется на следующем уровне. Этот процесс продолжается до тех пор, пока не будет достигнут корень дерева Меркла.
Давайте взглянем на каждую ноду:
Это хеш каждой криптовалютной транзакции в блоке, также называемый идентификатором транзакций (TXID). Вы просматриваете хеш транзакции при поиске транзакции в эксплорере.
Затем, чтобы создать уровень нелистовых нод над листовыми, они хешируются вместе парами. Они известны как нелистовые ноды, потому что, в отличие от листовых, они просто хранят хеш двух листовых нод и не содержат идентификаторов транзакций. В результате на уровне нелистовых нод будет вдвое меньше хеша, чем у листовых. По мере того, как дерево сужается по ходу подъема, эти слои, не являющиеся листовыми нодами, продолжают хешироваться попарно, в результате чего на слой приходится вдвое меньше нод. Две ноды будут присутствовать в конечной нелистовой ноде. Так создается корень дерева Меркла, где хранится последнее хеширование.
В Биткоине хеши всех транзакций объединяются в единый хеш и сохраняются в заголовке блока. Корень Меркла, также известный как корневой хеш, является именно этим хешем. Листовые ноды (идентификаторы транзакций/хеши) в основании дерева Меркла могут быть проверены с помощью этого корня. Он гарантирует, что блоки данных остаются неизменными, неповрежденными и целыми.
Дерево Меркла является бинарным, это означает, что общее количество различных листовых нод должно быть четным, чтобы дерево было правильно построено. Когда существует нечетное количество таких нод, предыдущий хеш дублируется, чтобы обеспечить четное количество нод.
Дерево Меркла, по сути, предназначено для разбиения больших фрагментов данных на значительно меньшие, что гарантирует оперативную проверку всех транзакций. Дерево суммирует каждую транзакцию, создавая небольшой «отпечаток», что облегчает пользователям проверку доступности транзакций в блоке.
Деревья Меркла формируются путем хеширования пар нод до тех пор, пока не останется только один хеш, который называется корнем Меркла. Эти деревья строятся снизу вверх, причем каждая транзакция состоит из хешей. Каждый листовая нода представляет собой отдельный хеш данных. Нелистовые ноды – это хеш предыдущих хешей.
Предположим, что дерево Меркла состоит из четырех транзакций, которые помечены как D0, D1, D2 и D3. Каждая транзакция хешируется до того, как хеш будет сохранен непосредственно в листовой ноде. Когда это происходит, создаются хеши N0, N1, N2 и N3. Любая последовательная пара листовых нод затем будет суммирована в родительской ноде посредством хеширования N0 и N1, что приводит к N4. Если N2 и N3 хешируются вместе, создается N5. N4 и N5 хешируются еще раз, чтобы создать корень Меркла.
Этот процесс может быть использован с обширными наборами данных. Корень Меркла отвечает за обобщение данных, присутствующих в конкретных транзакциях, все из которых хранятся непосредственно в заголовке блока. Этот метод поддерживает целостности данных. В случае, если в какой-то момент будет изменена одна деталь в транзакции, корень Меркла автоматически изменится вместе с ней.
У технологии блокчейна и криптовалютных платформ появляется много преимуществ при использовании дерева Меркла для проверки транзакций: от эффективной проверки до простого обнаружения ошибки.
Целостность транзакции легко проверить в кратчайшие сроки. Из-за того, как структурированы данные, в процессе проверки требуется использовать очень мало памяти, а требуемая вычислительная мощность значительно снижается.
Поскольку блокчейны обычно состоят из сотен тысяч блоков, каждый из которых может содержать до нескольких тысяч транзакций, появляются две основные проблемы: объем памяти и вычислительная мощность. Каждая нода в сети поддерживала бы полную копию транзакции, которая когда-либо имела место в блокчейне, если бы деревья Меркла не использовались в блокчейне. Ноде пришлось бы сравнивать каждую запись построчно при проверке транзакции, чтобы убедиться, что они точно соответствуют сетевым записям. Безопасность сети может быть поставлена под угрозу, если между ними возникнут какие-либо расхождения. Чтобы сравнить записи и убедиться в отсутствии изменений, компьютеру потребовалось бы гораздо больше вычислительной мощности.
Деревья Меркла, с другой стороны, предлагают решение этой проблемы за счет резкого сокращения объема данных, которые необходимо иметь под рукой. Они хешируют каждую запись в реестре, эффективно отделяя сами данные от подтверждающих их доказательств. Не зная каждого отдельного TXID в блоке, вы можете проверить TXID, используя корень Меркла с помощью хеш-дерева. Дерево Меркла – это отличный способ показать часть данных без необходимости загружать весь набор. Следовательно, для проверки транзакций требуется меньше вычислительной мощности.
В результате распределения транзакций в блоке каждый валидатор одновременно работает над другой транзакцией. По сравнению с методом, при котором каждая транзакция последовательно проверяется после другой, это намного эффективнее.
Простая проверка платежа (SPV), которая позволяет вам подтвердить транзакцию без загрузки всего блока или блокчейна, стала возможной благодаря дереву Меркла. Это позволяет использовать лайт-ноду, известную как криптокошелек, для отправки и получения транзакций.
Структура хеша позволяет майнерам легко идентифицировать вмешательство в транзакции.
Для каждого блока генерируется отдельное хэш-значение с использованием корня Меркла. Блок связывает один блок с другим, включая хеш предыдущего. Хеш любой транзакции меняется всякий раз, когда эта транзакция изменяется. Блок становится недействительным в результате этого изменения, поскольку он меняется до корня Меркла и обновляет его значение. Затем это приводит к изменению хеша следующего блока, делая оставшуюся часть блокчейна недействительной. В результате дерево Меркла создает неизменяемую запись транзакций блока.
Так также можно предотвратить двойное расходование. Если физическое лицо попытается дважды потратить свою цифровую валюту, для этой транзакции будет сгенерирован хеш. Если этот хеш совпадает с существующими записями, присутствующими в блокчейне, эта транзакция отклоняется.
Деревья Меркла доказали свою важность для технологии блокчейна: они облегчают быструю и легкую проверку способом, который невозможен при использовании других методов. Эти деревья Меркла предоставляют разработчикам возможность сжимать большие наборы данных, избавляясь от ненужной информации и превращая оставшиеся данные в хеш. Различные функции, предоставляемые хеш-деревьями, включают:
Очень легкая структура
Эффективная масштабируемость
Экономичность
Проверка включения транзакций в определенный блок
Базовая проверка платежа
Как упоминалось в начале, после краха FTX пользователи были обеспокоены тем, действительно ли их средства в безопасности на CEX. В результате появилось несколько CEX с деревом Меркела и Proof-of-Reserves. В этом разделе мы рассмотрим доказательства Меркела и то, как наши пользователи могут защитить свои средства.
Доказательство дерева Меркла – это вырезка из хеш-дерева. Оно представлено в виде массива или последовательности (показано желтой частью на диаграмме ниже).
Все листовые ноды и информация о балансе конкретного отдельного пользователя нашей компании представлены нодами последнего уровня. Розовый кружок на рисунке представляет предполагаемых получателей доказательств, а значит мы извлекаем оранжевые части уровень за уровнем и представляем документы-доказательства пользователям в порядке роста. Важно помнить, что доказательство Меркла состоит из двух основных компонентов
Прямые родительские ноды (т.е. B и D) этого пользователя не извлекаются.
Указывается корневая нода.
Взяв в качестве примера объем в 10 миллионов пользователей, высоту дерева можно рассчитать как Log2 (10 000 000) = 23,2534966642 на основе математической формулы, которая показывает высоту дерева в 24 уровня. Следовательно, нод на графике, которые не предоставляются пользователям, будет 24 - 2 = 22.
Дерево Меркла – это полное бинарное дерево, которое позволяет нам вычислить всю информацию о родительской ноде, просто зная левую и правую ноды. Эта информация состоит из двух частей: данных баланса и хеш-данных.
Данные о балансе: данные родительской ноды могут быть разделены только на его нижние левую и правую ноды.
Хеш-данные: каждой ноде соответствуют только данные баланса, данные иерархии и хеш-данные дочерней ноды (каждая хранит сводные данные левой и правой ноды под ними).
Проверка дерева Меркла проводится путем получения B и D и проверки того, что
баланс соответствует принципу разделения; и
хеш является действительным.
Используя функцию хеширования, дерево Меркла позволяет пользователям определять, являются ли они частью всего дерева, без необходимости знать о каждой фиолетовой ноде на графике. Доказательство Меркла является уникальным для этого пользователя. Например, 24-уровневому дереву Меркла требуется массив из 23 элементов для проверки информации о балансе пользователя, и этот массив может показать, что подтверждение баланса пользователя является точным.
Пользователь не может восстановить все дерево на основе своей фрагментированной информации до тех пор, пока он не получит более половины от общего числа пользователей. В результате хеш-дерево защищает как конфиденциальность пользователей, так и способность компании предотвращать утечку информации об общих активах.
Вам доступны 2 способа подтвердить свой аккаунт Bybit и проверить действительность средств.
Инструмент проверки платформы
Этот метод является первым и единственным во всей сети, и он покажет процесс получения ноды для проверки дерева Меркла в интуитивно понятной графической форме на платформе компании.
Инструмент подтверждения
Исходный код хеш-дерева и код проверки компании доступны на github. Это поможет пользователям в создании собственной проверки. Процесс вычисления дерева Меркла включает в себя огромное количество пользовательских вычислений, которые обычно реализуются с помощью большого объема данных и Java.
*Открытый Java-код означает, что он открыт для пользователей.
Bybit предоставила открытый исходный код для профессиональных пользователей. С ним они могут проверить собственный файл проверки хеш-дерева, скопировав его со страницы подтверждения резервов в свою собственную версию системы с помощью копирования данных и сохранив его в виде файла с именем myProof.json на локальном диске.
Структуры хеш-дерева и корня уже получили широкое распространение во многих различных блокчейнах и криптовалютных платформах. Ниже подробно описаны три таких приложения.
Биткоин использует деревья Меркла несколькими способами, что делает эти деревья неотъемлемой частью всей платформы. Фактически, эти деревья присутствуют в заголовке каждого биткоин-блока. Хеш для каждой транзакции, доступной в блоке, помещается в заголовок. Корень Меркла важен как для майнинга, так и для верификации.
Биткоин-блоки состоят из заголовков, которые содержат метаданные, а также обширный список транзакций. Этот список обычно больше, чем заголовок блока. Майнеры хешируют данные для создания выходных данных, соответствующих определенным условиям, которые необходимы при проверке блока. Майнеры могут предпринять триллионы отдельных попыток, прежде чем найдут действительный блок. Каждая попытка требует изменения номера в заголовке блока. Несмотря на то что в блоке могут существовать тысячи отдельных транзакций, каждая из них должна быть хеширована.
Корни Меркоа позволяют майнерам сделать этот процесс намного более эффективным. Когда начинается процесс майнинга, все, что необходимо, – это внесение транзакций в дерево Меркла, после чего корневой хеш может быть помещен в заголовок блока. На этом этапе майнеру требуется только хешировать только его, а не весь блок.
Другой аспект корня Меркла, который используется с биткоином, связан с кредитным плечом, которое ориентировано на лайт-клиентов. Когда нода работает на относительно слабом устройстве с ограниченными ресурсами, пользователи не смогут загружать и хешировать каждую транзакцию в одном блоке. Вместо этого может быть запрошено доказательство Меркла, которое является подтверждением того, что транзакция присутствует в блоке. За счет уменьшения количества хеша, который необходим в процессе проверки, она может выполняться без использования большого количества вычислительных ресурсов.
Ethereum основан на модифицированной версии дерева Меркла, именно поэтому его называют префиксным деревом Меркла. Каждый блок в блокчейне Ethereum состоит из трех деревьев Меркла, в отличие от одного бинарного дерева. Каждый из трех корней имеет свое собственное предназначение.
Начальный корень считается корнем каждой транзакции. Второй корень показывает состояние транзакции. Конечным корнем является получение транзакции. Пользователь может просмотреть корень Меркла, чтобы определить, есть ли транзакция в определенном блоке, а также определить, каков баланс его счета.
Если говорить конкретно о Hyperledger Fabric, то эта блокчейн-платформа использует дерево Меркла для вычисления блочных данных в виде хеша. Хеш-значение определяет ширину дерева Меркла. Деревья Меркла на платформе Hyperledger Fabric работают точно так же, как и на платформе Биткоин.
Деревья Меркла оказались очень полезными для криптовалютных платформ, которые хотят убедиться, что процесс проверки их транзакций максимально прост и эффективен. Без такой структуры проверка была бы трудоемким процессом, поскольку данные должны были бы передаваться по всей сети. Платформы, использующие деревья Меркла, выигрывают от меньших требований к пропускной способности и вычислительной мощности.
Никакого спама. Только куча интересного контента и обновлений индустрии криптовалют.