Monero тестирует систему конфиденциальности Bulletproofs+
Разработчики опубликовали код Bulletproofs+, системы доказательства с нулевым разглашением, которую можно использовать в протоколе Monero вместо существующей системы Bulletproofs. Новая конструкция сделает транзакции меньше, ускорится генерация кошельков, а участники сети будут быстрее их проверять.
Хотя код является функциональным и включает тесты для базовых алгоритмов, он должен быть проверен сторонними аудиторами перед развертыванием в будущем обновлении сети Monero. Код лицензирован с разрешениями, в надежде, что он может быть широко полезен.
В статье команда Monero выразила благодарность некоммерческой организации Multidisciplinary Academic Grants in Cryptocurrencies (MAGIC) за координацию и поддержку гранта для этой реализации, а также донорам, которые сделали эту работу возможной.
Доказательство с нулевым разглашением
Протокол конфиденциальных транзакций Monero требует использования системы доказательства диапазона с нулевым разглашением. Поскольку значения входов и выходов в транзакциях Monero скрыты, необходимо тайно доказать, что они представляют собой допустимые суммы, чтобы избежать переполнения, которое может ввести в заблуждение проверки баланса протокола. Конструкции, используемые для проверки диапазона, со временем эволюционировали. Первоначально протокол Monero использовал для этой цели разновидность кольцевых подписей; однако полученные доказательства были очень большими, и их медленно генерировали и проверяли, что приводило к медленной синхронизации блокчейна и большому раздутию цепочки.
Это было переработано после выпуска Bulletproofs, гораздо более эффективной системы проверки диапазона. С Bulletproofs доказательства диапазона намного меньше и быстрее проверяются; кроме того, можно одновременно проверять несколько доказательств в пакете, что приводит к еще более эффективной синхронизации.
Новый препринт изменяет конструкцию Bulletproofs для создания Bulletproofs+, еще более эффективной системы проверки диапазона.
Доказательства диапазона в Bulletproofs+ сохраняют ту же основную структуру, что и в Bulletproofs; однако они немного меньше по размеру, быстрее создаются и быстрее проверяются.
Теперь доступен код реализации, совместимый с базой кода Monero для упрощения развертывания.
Эффективность
Параллельное сравнение эффективности между Bulletproofs и Bulletproofs + доказательство диапазона возможно с использованием структуры тестирования производительности в кодовой базе Monero.
Размер и временные характеристики доказательств диапазона зависят от структуры транзакции, в которой они используются. Из-за того, как работают алгоритмы Bulletproofs и Bulletproofs +, количество выходов в транзакции эффективно округляется до следующей степени двойки для целей проверки диапазона, при этом в транзакции разрешается максимум 16 выходов. Подавляющее большинство транзакций Monero содержат два выхода, но 16 выходов также являются общими для выплат пула и других целей.
Размер
«Независимо от количества выходов в транзакции, соответствующее доказательство диапазона Bulletproofs + на 96 байт меньше, чем доказательство диапазона Bulletproofs».
В этой таблице показано уменьшение размера наиболее распространенных типов транзакций с двумя выходами, наблюдаемых в сети Monero.
Затраченные входы | Текущий размер | Новый размер | Уменьшение,% |
1 | 1,42 кБ | 1,33 кБ | 6,6% |
2 | 1.92 кБ | 1.83 кБ | 5.1% |
Результаты очевидны. Bulletproofs+ range proofs меньше, чем Bulletproofs range proofs, что экономит место на блокчейне!
Время
Время создания доказательства обычно не является предметом практического беспокойства, поскольку программное обеспечение кошелька должно делать это только при совершении транзакции. Однако стоит отметить, что Bulletproofs+ range proof с двумя выходами (самый распространенный) генерирует на 10,2% быстрее! Время расстойки для другого количества выходов масштабируется примерно линейно.
С другой стороны, время проверки пруфа очень важно! Участникам сети необходимо проверить большое количество подтверждений диапазона при присоединении к сети и синхронизации для получения новых блоков. К счастью, Bulletproofs+ доказательства диапазона (например, Bulletproofs) могут быть проверены партиями намного эффективнее, чем по отдельности. Мы ясно видим различия.
В этой таблице показано процентное сокращение времени проверки между алгоритмами Bulletproofs и Bulletproofs + для доказательств, содержащих разное количество выходов. Тесты для проверки единичных доказательств представляют собой медианные значения по 10 000 рандомизированных тестов. Тесты для проверки пакетов доказательств представляют собой средние значения более 1000 рандомизированных тестов, где каждая партия содержит 64 доказательства. Абсолютное время не указывается, поскольку оно зависит от вычислительной среды; однако относительное время в целом сопоставимо и согласовано.
Число выходов | Одно подтверждение, на% быстрее | Пакетное подтверждение, на% быстрее |
2 | 1,5% | 5,3% |
4 | 0,5% | 9,2% |
8 | 1,6% | 9,2% |
16 | 0,9% | 10,8% |
Результаты очевидны. Bulletproofs+ доказательства диапазона проверить быстрее, чем Bulletproofs диапазона, что приводит к более быстрой синхронизации!