Целью введения протокола RingCT было сокрытие сумм, переводимых при совершении транзакций. Одной из задач RingCT также было доказательство суммы выходов — выходы транзакции были равны 0, а все выходы были представлены положительными числами.
Чтобы решить эту задачу, было построено два типа кольцевых подписей: одна кольцевая подпись для всей транзакции (чтоб доказать, что сумма является нулевой) и набор кольцевых подписей для поднаборов битов транзакций (позднее были заменены кольцевой подписью Борромео).
Несмотря на то, что протокол работал и решал свою задачу, у него был один
серьёзный недостаток: огромный размер таких RingCT транзакций.
В 2017 году группой исследователей, работающих в области прикладной криптографии, из Стэнфорда была написана работа, в которой предлагался новый вид доказательств диапазона под названием Bulletproofs.
Bulletproofs являются короткими неинтерактивными доказательствами с нулевым раскрытием конфиденциальной информации, не требующими доверенных настроек.
Bulletproofs, в отличие от подписей Борромео и Шнорра, являются довольно эффективным доказательством диапазона. При доказательстве большого объёма данных генерируется небольшое доказательство, а размер подобных доказательств растёт логарифмически по мере роста объёма доказываемых данных.
Это означает, что увеличение количества выходов в транзакции при использовании Bulletproofs лишь незначительно увеличит размер доказательства. Другим преимуществом также является то, что они позволяют одновременно доказать, что множество подтверждённых сумм находится в пределах желаемого диапазона.
Необходимость в доказательстве каждого выхода, передаваемого в любом
направлении, отдельным доказательством отсутствует; все суммы транзакций
могут быть доказаны одним большим (но всё же небольшим) доказательством
Bulletproof.
Так как доказательства Bulletproofs были абсолютно новой технологией, начальная реализация, выполненная группой, даже несмотря на то, что она была тщательно проработана, требовала редакции с учётом определённых вариантов использования, так что реализация Bulletproofs в рамках Monero стала довольно непростым делом.
Код писался и переписывался в соответствии с новой версией Bulletproofs, которая всё ещё находилась в разработке. Но как только реализация доказательств для Monero была завершена, стало ясно, что ввод технологии в эксплуатацию требует предельной осторожности.
Поэтому сообществом был запущен процесс аудита. Исследователи связались с Бенедиктом Бюнцем (Benedikt Bünz), главным автором работы по Bulletproofs, и с OSTIF, организацией, которая помогает улучшать и обеспечивать безопасность открытых технологий.
OSTIF была направлена группа специалистов из нескольких организаций, обладающих необходимыми для проведения аудита навыками. Несмотря на то, что один из специалистов пожелал сохранить анонимность и был отстранён от процесса, так как процесс в данном случае требовал публичности, двое других (QuarksLab & Kudelski Security) были выбраны для проведения аудита.
Работа трёх аудиторов финансировалась сообществом и была направлена на то,
чтобы гарантировать отсутствие в реализации критических багов, а также
эксплоитов. Окончательные отчёты были выпущены летом 2018 года. При этом
было предложено внести несколько полезных исправлений. Окончательный вариант
реализации Bulletproofs сначала был добавлен в стендовую сеть Monero, а
затем, в октябре 2018, в основную сеть в рамках её обновления.
После введения Bulletproofs в эксплуатацию средний размер транзакций сократился, по крайней мере, на 80%, равно как и размер комиссий за проведение транзакций.
Более подробную информацию по реализации Bulletproofs Monero можно найти на YouTube канале fondajo в интервью с Сарангом Ноезером (Sarang Noether).