Дерево Меркла — это бинарная, похожая на дерево структура хеш-данных. В бинарном дереве у ноды может быть не более двух дочерних нод — левой и правой. Каждая нода-листок дерева Маркла хранит значение хеша определённого элемента данных. Когда мы знаем данные левой и правой ноды, мы можем получить полную информацию о материнской ноде. Эта полная информация состоит из двух секций: данные о балансе адреса кошелька и хеш-данные.
- Данные о балансе: Учитывая структуру данных бинарного дерева, данные о балансе материнской ноды могут состоять только из данных о балансе правой и левой ноды под ней.
- Хеш-данные: Каждая нода включает данные о балансе, иерархические данные о бинарном дереве (пунктирная линия на рисунке) и хеш-данные дочерних нод (данные левой ноды и правой ноды хранятся под каждой нодой).
Дерево Меркла проверяется путём подсчёта, как показано на зелёных элементах (B и D) на рисунке выше, и по двум следующим критериям:
1. Соответствие баланса принципу расщепления.
2. Легитимность хеша.
В дереве Меркла используется функция хеширования, которая позволяет пользователям проверять принадлежность к целому дереву без получения информации, содержащейся в материнских нодах. Подтверждения Меркла уникальны для индивидуальных пользователей. К примеру, если дерево Меркла состоит из 24 уровней, для подтверждения информации о балансе структура баланса пользователей должна иметь 24 элемента, причём эта структура используется только для подтверждения баланса пользователей.
В том случае, если получаемая пользователем информация не превышает 50% от данных всех пользователей в дереве Меркла, на основании собственной фрагментированной информации пользователи не могут воссоздать всю структуру данных. Таким образом, с точки зрения компаний, дерево Меркла гарантирует, что не будет утечки информации обо всех активах компании, и что конфиденциальность аккаунтов пользователей будет защищена.
Bybit использует два следующих способа подтверждения:
Подтверждение через платформу Bybit
На этой странице можно перейти в раздел Проверить мои резервы и посмотреть своё место в дереве Меркла. Мы графически покажем процесс получения и подтверждения ноды дерева Меркла, чтобы вам было проще просматривать свой баланс активов.
Примечание. Мы проводим регулярные аудиты Подтверждения резервов (Proof of Reserves), чтобы продемонстрировать, что Bybit имеет соответствующие резервы. Если вы создали свою учетную запись после проведения аудита или у вас нет токенов по которым он проводился, то для вашей учетной записи не будет никаких соответствующих записей аудита.
Инструмент самостоятельного подтверждения — открытый исходный код
Bybit опубликовал исходный код и код подтверждения своего дерева Маркла на GitHub, чтобы пользователи могли самостоятельно проверить свой баланс. Процесс подсчёта в дереве Меркла включает в себя обработку массивных данных пользователей, для чего обычно используются большие данные и Java. Шифрование Java является полностью открытым и доступным для проверки со стороны пользователей.
Подготовка
Bybit открыл исходники следующих кодов, чтобы профессиональные пользователи могли самостоятельно проверить свой баланс. Пользователи могут нажать на Копировать данные на своей странице Подтверждения резервов и скопировать данные в файл подтверждения дерева Меркла в собственную систему программирования, после чего хранить их на локальном диске как файл с именем myProof.json.
Что дальше
1. Создайте свой исполняемый файл
Загрузите последние файлы с исходным кодом и убедитесь , что на рабочей станции или компьютере установлены JDK (версия 1.8 и выше) и Maven.
- Разрешите зависимости, скомпилируйте и создайте пакет.
- В текущей папке проекта проверьте скомпилированный пакет jar, как показано ниже.
2. Совершите проверку
- Можно вставить файл с подтверждением, скопированный с веб-сайта Bybit, в новый файл в текущей папке, и назвать его myProof.json. После этого выполните следующую команду:
- Дальше можно запускать программу проверки и изучать полученные данные.