Введение

Для функционирования блокчейна часто считается критически важным, чтобы система была прозрачной. Это означает, что каждый узел в сети может хранить копию и проверять, не нарушены ли какие-либо правила. Для многих распределенных реестров любой может загрузить онлайн-обозреватель блоков, который позволяет выполнять поиск по блокам, транзакциям и адресам.

С точки зрения конфиденциальности это не идеально. В такой системе, как Биткойн, каждая транзакция может быть связана с предыдущей. Монеты технически не взаимозаменяемы, а это означает, что каждая из них может быть привязана к конкретным транзакциям. Никто не может помешать вам отправить биткойны, но они могут отказаться принять вашу транзакцию, если эти монеты ранее прошли через адрес, занесенный в черный список.

В худшем случае отсутствие взаимозаменяемости может серьезно повлиять на самые основы системы. Чистые монеты могут стоить дороже, а более старые будут менее ценными, учитывая их историю.

Конфиденциальность в Биткойне часто переоценивают. Отслеживать можно не только монеты, но и пользователей. Они пользуются псевдонимностью (вместо имен видны публичные адреса), но она не лишена недостатков. Сложные методы анализа позволяют с возрастающей точностью группировать адреса в попытке деанонимизировать сетевые объекты.

Одним из обновлений, предложенных для того, чтобы сделать транзакции по-настоящему конфиденциальными, является Конфиденциальные транзакции.


Что такое конфиденциальные транзакции?

Конфиденциальные транзакции (CT) впервые обсуждались генеральным директором Blockstream Адамом Бэком в 2013 году, а затем были расширены разработчиком биткойнов Грегори Максвеллом. Максвелл обрисовал проблемы, упомянутые в первом разделе (взаимозаменяемость и слабая псевдонимность), и предложил решение. Переведенные суммы можно было бы скрыть от более широкой сети, чтобы только стороны транзакции знали, сколько было отправлено.


Normal transactions vs Confidential transactions


В обычных обстоятельствах (с общедоступными транзакциями) узлу легко проверить, что полученная сумма не превышает отправленную сумму. Если Алиса хочет отправить 0,3 BTC Бобу, она берет неизрасходованный выход (назовем его 1 BTC) и разбивает его на две части: 0,3 для отправки Бобу и 0,69 для отправки обратно ей (остальные теряются как плата за майнинг).

Это простая алгебра для других узлов: 1 превышает 0,3 + 0,69, все подписи верны, а входные данные Алисы еще не были потрачены где-либо еще, поэтому транзакция должна быть валидной. Однако когда суммы скрыты, все не так тривиально. Как вообще можно оценить, равна ли неизвестная сумма сумме двух других неизвестных сумм или превышает ее?


Обзор используемой криптографии

Чтобы скрыть данные, требуется шифрование. Однако традиционные методы сродни помещению документов в сейф: однажды запертые внутри, они становятся непригодными для использования, пока их не извлекут. Для работы конфиденциальных транзакций нам нужен цифровой сейф, содержимое которого не раскрывается, но свойства которого могут быть проверены посторонним.

Ответ кроется именно в гомоморфном шифровании, в схеме, называемой обязательством Педерсена. Этот тип шифрования позволяет постороннему пользователю выполнять операции с зашифрованными данными (которые он не может видеть) для ряда целей.

Обычный хеш можно использовать для фиксации данных, которые вы хотите раскрыть позже. Предположим, вы хотите объявить в социальных сетях конкурс, в котором тот, кто угадает вашу любимую биржу, получит приз в размере 0,01 BTC. Участники могут быть настроены скептически, потому что вы можете просто просмотреть ответы после закрытия конкурса и выбрать обмен, который не был упомянут.

Что вы можете сделать, так это предоставить своим подписчикам хеш: строку, казалось бы, случайных чисел и символов, которая соответствует определенному входному сигналу. Вы передаете свой обмен через функцию, чтобы получить определенный результат. Мы проиллюстрируем это алгоритмом SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Глядя на это, вы понятия не имеете, что это был за вход. Вы также не можете отменить функцию, чтобы получить ее. Однако, если вы знаете, что входные данные были «Binance», вы можете легко проверить, что его хэш соответствует указанному выше. Таким образом, ваши подписчики будут иметь некоторую уверенность в том, что вы не измените свой ответ по завершении конкурса — это приведет к совершенно другому результату.

Однако на самом деле это не очень безопасно. Хотя ваши последователи не могут перепроектировать алгоритм, они могут составить список возможных обменов, хешируя каждый до тех пор, пока не найдут совпадение. Мы можем снизить вероятность этого, добавив к данным, которые мы собираемся хешировать, некоторые случайные данные, называемые фактором ослепления.

Если мы введем «Binance — моя любимая биржа, я люблю ее больше, чем любую другую биржу 2#43Wr», оппоненту станет значительно труднее угадать (а при 0,01 BTC вряд ли кто-нибудь даже попытается это сделать).

Обязательства Педерсена позволяют нам добавить вклады, лежащие в основе обязательств. Как показывает Максвелл:


confidential transaction equation


С(БФ1 + Д1) + С(БФ2 + Д2) = С(БФ1 + БФ2, Д1 + Д2)

Где BF — коэффициент ослепления, а D — данные.


Отсюда следует еще несколько шагов, включающих криптографию на основе эллиптических кривых и доказательство диапазона, но основная идея заключается в том, что у пользователя есть обязательство Педерсена для своего адреса. При отправке средств создаются два дополнительных обязательства (одно для адреса изменения, который будет возвращен пользователю, и одно для адреса назначения).

Никто не знает, сколько денег отправляется, но они могут проверить, что обязательства по сдаче и назначению (левая часть уравнения Максвелла) складываются с адресом отправителя (правая часть уравнения). Если это оценивается правильно, то транзакция пользователя действительна, поскольку можно доказать, что входные данные равны выходным.


Чего можно достичь с помощью конфиденциальных транзакций?

Если бы конфиденциальные транзакции были реализованы в Биткойне, мы получили бы гораздо более приватную систему. И входы, и выходы будут скрыты от более широкой сети, а записи в реестре будут запутаны, но узлы все равно смогут проверять их подлинность. Благодаря такому значительному повышению конфиденциальности биткойны могут эффективно стать взаимозаменяемыми, поскольку анализ цепочки больше не раскрывает историю. данной единицы.

Что касается того, будут ли конфиденциальные транзакции интегрированы в протокол, в настоящее время это маловероятно. Благодаря этой дополнительной функциональности транзакции намного крупнее стандартных — учитывая ограниченное пространство блоков, это только увеличит спрос. Для этого также потребуется согласие большинства участников на изменение кодекса – задача, которая традиционно оказывалась сложной.


Заключительные мысли

Конфиденциальные транзакции претерпели некоторые итерации в других криптовалютах и ​​сайдчейнах Биткойна. Например, Monero использует их в сочетании с конструкциями, называемыми кольцевыми подписями, для достижения анонимности и взаимозаменяемости. Сайдчейн Liquid реализует их для большей конфиденциальности, а MimbleWimble расширяет их для тех же целей.

Из-за преимуществ, которые они приносят, конфиденциальные транзакции требуют большего размера. Криптовалюты часто испытывают трудности с масштабируемостью и пропускной способностью на базовом уровне, а большие размеры транзакций нравятся не всем. Тем не менее, защитники конфиденциальности считают, что важно скрывать суммы транзакций и участников, чтобы криптовалюта действительно могла служить взаимозаменяемыми деньгами.