Ключевые выводы
Доказательство с нулевым разглашением позволяет одной стороне доказать другой стороне, что утверждение истинно, не раскрывая никаких лежащих в основе данных.
zk-SNARK — это тип протокола доказательства с нулевым разглашением, который используется в криптографии для верификации информации (например, балансов счетов) без раскрытия конфиденциальных деталей.
Binance использует zk-SNARK в сочетании с деревьями Меркла, чтобы пользователи могли проверить, что их балансы включены в общий Proof of Reserves, не раскрывая данные отдельных аккаунтов.
Помимо резервов биржи, ZK-доказательства все чаще применяются в ZK-rollups, для верификации личности и в системах голосования по всей экосистеме блокчейна.
Введение
Пользователи блокчейна ценят и прозрачность, и приватность. Во многих ситуациях эти две цели кажутся противоречащими друг другу: чтобы доказать, что что-то является истинным, часто нужно раскрывать детали, стоящие за этим. Доказательства с нулевым разглашением предлагают способ снять это противоречие.
Используя протоколы доказательства с нулевым разглашением, такие как zk-SNARK, вместе с криптографическими структурами данных, такими как деревья Меркла, можно доказывать валидность информации, не раскрывая саму информацию. В этой статье объясняется, как работают эти инструменты и как Binance применяет их для Proof of Reserves.
Что такое доказательство с нулевым разглашением?
Доказательство с нулевым разглашением позволяет одной стороне (доказывающей) убедить другую сторону (проверяющую), что утверждение истинно, не передавая никакой информации о содержании этого утверждения. Концепция впервые появилась в научной статье 1985 года и с тех пор стала фундаментальным элементом прикладной криптографии.
Простая аналогия: представьте, что вы знаете комбинацию к запертому сейфу. Вы можете доказать это другу, открыв сейф и зачитал(а) заметку, которую он туда поместил, а затем снова закрыв сейф. Теперь ваш друг уверен, что вы знаете комбинацию, хотя вы никогда не говорили, что именно это за комбинация.
Для более глубокого технического объяснения см. статью Academy «Что такое доказательство с нулевым разглашением и как оно влияет на блокчейн».
Почему доказательства с нулевым разглашением полезны?
ZK-доказательства полезны в любых ситуациях, где нужно доказать утверждение, не раскрывая конфиденциальные данные. В традиционных системах, чтобы доказать, что вы владеете активом или что у вас есть определенные полномочия, часто требуется делиться лежащей в основе информацией, что создает риски для приватности и безопасности.
В криптовалюте распространенные варианты использования включают:
Доказательство владения приватным ключом без раскрытия самого ключа.
Предоставление бирже возможности проверить свои суммарные резервы пользователей, не раскрывая балансы отдельных аккаунтов.
Включение масштабируемых транзакций блокчейна через ZK-rollups без публикации каждой транзакции on-chain.
Эти доказательства используют алгоритмы, которые принимают данные на вход и возвращают либо true, либо false, не раскрывая при этом никаких деталей об исходных данных.
Технические свойства доказательств с нулевым разглашением
Корректное доказательство с нулевым разглашением должно удовлетворять трем свойствам:
Полнота. Если утверждение истинно, честный проверяющий будет убежден доказательством.
Звуковость (неподделываемость). Если утверждение ложно, ни один доказывающий не сможет убедить проверяющего, что оно истинно.
Нулевое разглашение. Если утверждение истинно, проверяющий не узнает ничего сверх того факта, что оно истинно.
Что такое zk-SNARK?
zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) — это тип протокола доказательства с нулевым разглашением. Он разработан так, чтобы быть кратким (небольшой размер доказательства), не требовать взаимодействия (нет обмена сообщениями между доказывающей и проверяющей сторонами) и быть криптографически надежным.
С помощью zk-SNARK можно доказать знание скрытого значения или то, что вычисление было выполнено корректно, не раскрывая ничего о входных данных. В контексте криптобиржи это означает возможность подтвердить, что сумма всех пользовательских балансов соответствует заявленным резервам, не показывая ни один индивидуальный баланс.
Шаг верификации выполняется чрезвычайно быстро по сравнению со временем, необходимым для генерации самого доказательства. Это делает zk-SNARK практичными для крупномасштабных приложений, таких как аудит биржевых операций или масштабирование блокчейна.
Что такое дерево Меркла?
Дерево Меркла — это криптографическая структура данных, которая эффективно организует большие объемы информации. Каждый фрагмент данных преобразуется в хэш, а полученные хэши объединяются попарно до тех пор, пока не будет получен один корневой хэш. Любое изменение любого входного значения меняет корневой хэш, поэтому подделку легко обнаружить.
Хэш-функции
Деревья Меркла зависят от хэш-функций. Хэширование берет входные данные любой длины и производит выход фиксированной длины. Один и тот же вход всегда дает один и тот же выход. Даже небольшое изменение входных данных приводит к совершенно другому выходу.
Например, если пропустить через хэш-функцию SHA-256 100 книг, получится уникальная строка длиной 64 символа. Измените в этих книгах один символ — и результат изменится полностью. Это свойство позволяет легко проверять целостность данных, не сравнивая все исходное содержимое.
Деревья Меркла в криптовалюте
В блокчейне каждая транзакция хэшируется, чтобы получить уникальную конечную вершину (leaf). Затем пары конечных вершин объединяются и снова хэшируются, чтобы сформировать промежуточные (branch) вершины. Процесс продолжается до тех пор, пока не будет получен один корень Меркла. Этот корень криптографически суммирует все транзакции в блоке.
Для бирж деревья Меркла дают способ организовать клиентские балансы, чтобы их можно было аудитировать, не раскрывая при этом данные каждого отдельного аккаунта.
Ограничения использования деревьев Меркла по отдельности
Криптобиржа может построить дерево Меркла на основе всех балансов клиентских счетов, чтобы поддержать Proof of Reserves (PoR). Однако без дополнительных защит такой подход имеет уязвимости.
Без слоя ZK биржа потенциально может исключить часть аккаунтов из дерева или вставить фиктивные аккаунты с отрицательными балансами, чтобы уменьшить кажущуюся общую сумму обязательств. Пользователь, который проверяет только собственную конечную вершину (leaf), не сможет это обнаружить, не видя все остальные аккаунты.
Использование доверенного третьего лица-аудитора — один из возможных вариантов решения, но для этого нужно доверять и самому аудитору, и данным, к которым он получил доступ.
Как zk-SNARK и деревья Меркла работают вместе
Комбинация zk-SNARK и деревьев Меркла убирает необходимость доверять третьей стороне. Биржа строит дерево Меркла из всех пользовательских балансов, а затем генерирует доказательство zk-SNARK, которое математически гарантирует:
Каждый пользовательский баланс включен в дерево Меркла (без пропуска аккаунтов).
Ни у одного пользователя нет отрицательного чистого баланса (нет сфальсифицированных данных).
Корень Меркла валиден и не изменен.
Пользователи могут проверить, что их собственный баланс повлиял на корень Меркла. Они также могут проверить доказательство zk-SNARK, чтобы убедиться, что дерево было построено корректно, не видя балансы других пользователей.
Как Binance применяет эту систему
Binance задает ограничения того, что она хочет доказать, как программируемую схему (circuit). Для каждой конечной вершины баланса пользователя в дереве Меркла схема проверяет три условия:
Активы пользователя включены в расчет общей суммы чистого баланса.
Общий чистый баланс пользователя больше или равен нулю.
Корень Меркла остается валидным после включения данных этого пользователя.
Затем Binance генерирует доказательство zk-SNARK для всего дерева Меркла. На каждом релизе Proof of Reserves Binance публикует доказательство Меркла для каждого пользователя и доказательство zk-SNARK вместе с его публичными входными данными. Любой может независимо проверить оба результата, используя общедоступный код с открытым исходным кодом.
Такой подход обеспечивает математическую уверенность, а не полагается только на доверие аудитора.
Более широкие применения помимо Proof of Reserves
Технология ZK-доказательств значительно вышла за рамки аудита бирж. ZK-rollups — теперь один из ведущих подходов масштабирования уровня 2 в Ethereum: транзакции обрабатываются вне цепочки и отправляются ZK-доказательства в основную сеть, чтобы подтвердить корректность. Это может повысить пропускную способность при сохранении безопасности.
Помимо масштабируемости, ZK-доказательства рассматриваются для верификации личности (доказать, что вы соответствуете требованию по возрасту или юрисдикции, не раскрывая полностью свою личность), для частных систем голосования и для конфиденциального выполнения смарт-контрактов. Технология все еще развивается, но ее потенциальные применения в финансах, управлении и цифровой идентификации значительны.
Часто задаваемые вопросы
Что такое доказательство с нулевым разглашением простыми словами?
Доказательство с нулевым разглашением позволяет вам доказать, что вы знаете что-то, или что утверждение истинно, не раскрывая лежащую в основе информацию. Это похоже на доказательство того, что вы знаете комбинацию от сейфа, открыв его и показав записку, которую вы туда положили, — не говоря при этом никогда, какая именно комбинация.
Почему Binance использует zk-SNARK для Proof of Reserves?
Binance использует zk-SNARK, чтобы доказать, что клиентские балансы полностью обеспечены, не раскрывая детали отдельных аккаунтов. ZK-доказательство дает математическую верификацию того, что все аккаунты включены и что не существует отрицательных балансов, без требования доверять аудитору.
В чем разница между zk-SNARK и ZK-rollups?
zk-SNARK — это тип протокола доказательства с нулевым разглашением. ZK-rollups — решение для масштабирования уровня 2, которое использует zk-SNARK (или похожие доказательства), чтобы объединить множество транзакций и отправить в основную блокчейн-сеть одно доказательство валидности. zk-SNARK — лежащий в основе криптографический инструмент; ZK-rollups — одно из применений этого инструмента.
Могут ли пользователи независимо проверить Proof of Reserves от Binance?
Да. Binance публикует доказательство Меркла для каждого пользователя и доказательство zk-SNARK вместе с его публичными входными данными. Пользователи могут проверить, что их баланс был включен в дерево Меркла, и что доказательство zk-SNARK подтверждает корректность построения дерева, используя общедоступный открытый код, выпущенный Binance.
Используются ли доказательства с нулевым разглашением только для резервов бирж?
Нет. ZK-доказательства имеют широкий спектр применений. В блокчейне их используют в ZK-rollups для масштабирования транзакций, в системах идентификации и для конфиденциального выполнения контрактов. Вне криптографии их изучают для приватного голосования, проверки возраста и подтверждения полномочий без раскрытия данных.
Заключительные мысли
Комбинируя zk-SNARK и деревья Меркла, биржи могут предоставлять криптографическое доказательство резервов, не раскрывая данные пользователей. Помимо аудита резервов, ZK-технология находит свое применение в масштабировании блокчейна, системах идентификации и децентрализованном управлении.
Дополнительное чтение
Что такое доказательство с нулевым разглашением и как оно влияет на блокчейн?
Объяснение zk-SNARK и zk-STARK
Что такое ZK-Rollups?
Что такое Proof of Reserves и как он работает на Binance
Объяснение деревьев Меркла и корней Меркла
Отказ от ответственности: эта информация предоставляется вам «как есть» только для общей информации и образовательных целей и без каких-либо заверений или гарантий любого рода. Ее нельзя истолковывать как финансовую, юридическую или иную профессиональную консультацию, а также она не предназначена для рекомендаций к покупке каких-либо конкретных продуктов или услуг. Вам следует получить собственную консультацию у соответствующих профессиональных советников. Если содержание подготовлено третьим лицом, учтите, что высказанные там взгляды принадлежат этому третьему лицу и не обязательно отражают позицию Binance Academy. Цены цифровых активов могут быть волатильными. Стоимость ваших инвестиций может как снижаться, так и расти, и вы можете не вернуть сумму инвестиций. Вы несете единоличную ответственность за решения об инвестициях, и Binance Academy не несет ответственности за любые убытки, которые вы можете понести. Для получения дополнительной информации см. наши Условия использования, Предупреждение о рисках и Условия Binance Academy.
