Что такое конфиденциальные транзакции (Confidential Transactions)?
Что такое конфиденциальные транзакции?
Внимание! Статья устарела и ждет обновления.
Кто и когда изобрел технологию конфиденциальных транзакций?
Первую версию концепции под названием «биткоины с гомоморфической ценностью» в 2013 году предложил изобретатель Hashcash и сооснователь компании Blockstream Адам Бэк.
В 2015 году технологию впервые имплементировали в разработанный Blockstream сайдчейн Elements.
В дальнейшем концепцию развил разработчик Bitcoin Core Грегори Максвелл.
Зачем нужны конфиденциальные транзакции?
Как известно, полной конфиденциальности биткоин не обеспечивает. Поскольку блокчейн публичен, посредством инструментов для анализа транзакций можно не только отследить движения средств пользователей, но и определить, кто именно эти транзакции совершает.
Недостаток конфиденциальности не позволяет биткоину быть полностью взаимозаменяемым и уменьшает его устойчивость к цензуре. Например, биржи и другие сервисы могут блокировать аккаунты пользователей из-за того, что биткоины ранее могли использоваться в незаконных целях, хотя их нынешний владелец может об этом не знать. Технология конфиденциальных транзакций потенциально позволяет эти проблемы решить.
Как работает технология конфиденциальных транзакций?
Технология реализует новые форматы адреса и транзакции. Формат транзакции состоит из scriptPubKey, схемы обязательства Педерсена и случайного кода ECDH (эллиптической кривой Диффи-Хелмана).
ScriptPubKey содержит адрес конфиденциальной транзакции (Confidential Transaction Address — CTA) и математическое условие, согласно которому биткоин можно потратить только в том случае, если право собственности закрытого ключа адреса подтверждено подписью.
Адрес конфиденциальной транзакции – это хеш ослепляющего ключа плюс обычный биткоин-адрес.
Функция ослепляющего ключа – скрывать в публичном реестре адрес биткоина и сумму транзакции. Кроме того, доступ к ослепляющему ключу дает возможность видеть адрес биткоина и сумму в конфиденциальной транзакции.
Схема обязательства Педерсена – это хеш всего выхода биткоина плюс ослепляющий ключ.
Код ECDH – это ключ, позволяющий раскрыть всю конфиденциальную транзакцию. Он используется для передачи зашифрованных данных получателю транзакции, который узнает выход биткоин-транзакции и ослепляющий фактор конфиденциальной транзакции.
Пример работы конфиденциальных транзакций.
На кошельке Алисы два биткоина, один из которых она хочет отправить Бобу.
Получив адрес Боба, Алиса создает ослепляющий ключ и объединяет их единым хешем. Так возникает конфиденциальный адрес. Хотя он записывается в публичном реестре, никто, кроме Алисы и Боба, не знает, что адрес конфиденциальной транзакции связан с адресом Боба.
Пример конфиденциального адреса:
CTEwQjyErENrxo8dSQ6pq5atss7Ym9S7P6GGK4PiGAgQRgoh1iPUkLQ168Kqptfnwmpxr2Bf7ipQsagi
Затем Алиса создает конфиденциальную транзакцию. Используя тот же самый ослепляющий ключ и выход одного биткоина, она создает обязательство Педерсена. Благодаря этому сумма, которую Алиса посылает Бобу, скрывается, но оба они могут видеть ее, поскольку у обоих есть публичный ослепляющий ключ. У Алисы он есть, поскольку она создала ослепляющий ключ, а Боб может вывести его с помощью закрытого ключа своего биткоин-адреса.
Затем Алиса создает scriptPubKey с адресом конфиденциальной транзакции, который она создала с биткоин-адресом Боба, с математическим условием, согласно которому можно потратить один биткоин, если Боб сумеет подтвердить подписью владение закрытым ключом адреса.
Затем транзакция записывается в публичном реестре.
Как технология решает проблему сохранения нулевого баланса?
Один из ключевых принципов в биткоине заключается в том, что адреса должны поддерживать нулевой баланс – количество биткоинов, поступающих на адрес, должно соответствовать количеству биткоинов, покидающих адрес.
Но поскольку конфиденциальные транзакции маскируют суммы, возникают две проблемы:
- Становится невозможным использовать традиционный способ расчета транзакционных комиссий – посредством вычитания.
- Сеть не может установить, соответствует ли выход из адреса входу, что делает невозможным сохранение нулевого баланса.
Первую проблему легко можно решить, сделав транзакционные сборы доступными для обозрения.
Решением второй проблемы служит схема обязательств Педерсона.
Концепция обязательств Педерсена имеет уникальное математическое свойство гомоморфичности. Гомоморфизм – это структура, сохраняющая образ между двумя алгебраическими структурами. Это решение эффективно для криптографии, поскольку позволяет хешировать данные и с помощью элементарных алгебраических действий, таких как сложение, верифицировать данные, стоящие за хешем. Иначе говоря, можно передавать информацию, не раскрывая сами данные.
Пример:
Берем простую алгебраическую структуру и «хешируем» значения, умножая на 2.
(a + b)2 = a*2 + b*2
Предположим, что a=1, а b=3.
(1+3)2 = 1*2 + 3*2
(4)2 = 2+6
Если заменить значение «а» на левой стороне уравнения другим числом, например 4, алгебраическая структура уже не будет истинной:
(a + b)2 = a*2 + b*2
(4 + 3)2 ≠ 1*2 + 3*2
Посредством гомоморфического свойства обязательств Педерсона конфиденциальные транзакции обеспечивают сохранение нулевого баланса биткоин-адресов.
Теперь применим этот концепт к Алисе, отправляющей Бобу один биткоин. Для простоты фактор транзакционных комиссий не учитывается.
У Алисы есть обязательство Педерсона в два биткоина для ее конфиденциальной транзакции. Когда Алиса посылает Бобу один биткоин, для создания хеша она использует определенную математическую формулу. Затем она использует ту же математическую формулу, чтобы послать один биткоин на адрес размена. Мы складываем два хеша, чтобы посмотреть, равен ли результат обязательству Педерсена адреса Алисы в отношении двух биткоинов. Если результат равен, хеш становится действительной конфиденциальной транзакцией.
Какие преимущества у конфиденциальных транзакций?
Протокол позволяет повысить конфиденциальность биткоина. Ослепляющие ключи маскируют биткоин-адреса и суммы, что делает биткоин более взаимозаменяемым.
Также ослепляющие ключи можно использовать для аудита: отправитель или получатель платежа может передать ослепляющий ключ третьей стороне с целью аудита.
Какие недостатки конфиденциальных транзакций?
Хотя технология конфиденциальных транзакций позволяет скрывать суммы транзакций, наблюдатели видят адрес отправителя и адрес получателя.
Существует потенциальное решение этой проблемы. Можно создать ложноотрицательный результат и отправить нулевые суммы на несколько адресов, чтобы скрыть адрес, на который действительно поступили биткоины.
Кроме того, технологию конфиденциальных транзакций можно использовать в сочетании с технологией CoinJoin, которая объединяет выходы транзакций в одну большую транзакцию, скрывая связи между пользователями от сторонних наблюдателей.
Другой недостаток технологии – она скрывает сумму только для конкретной транзакции. Это бесполезно, если последующая транзакция не является конфиденциальной. С помощью данных такой транзакции можно задним числом рассчитать количество биткоинов в конфиденциальной транзакции.
Например, если Алиса отправляет неизвестное количество биткоинов Бобу, а Боб, в свою очередь, отправляет пять биткоинов Кэрол и два самому себе в виде сдачи, то можно понять, что Алиса отправила Бобу семь биткоинов.
Конфиденциальные транзакции вполне эффективны только в том случае, если эта технология применяется широко.
- Объем данных конфиденциальной транзакций примерно в 20 раз больше обычной транзакции, что увеличивает вычислительную нагрузку в три раза. Поэтому цена конфиденциальной транзакции будет значительно выше, чем цена обычной, что сужает круг потенциальных пользователей.
- Размер конфиденциальной транзакции вступает в противоречие либо с масштабируемостью (сеть сможет обработать меньшее количество транзакций), либо с децентрализацией (сократится число пользователей, способных управлять полной нодой и верифицировать все транзакции), либо с ними обеими.
- Неясно, согласятся ли все пользователи с тем, чтобы сделать биткоин более конфиденциальным и взаимозаменяемым. Отсутствие консенсуса может еще более затруднить реализацию потенциальных софтфорков, необходимых для имплементации технологии.
Где применяется технология конфиденциальных транзакций?
Технология конфиденциальных транзакций применяется в коммерческом сайдчейне Liquid, разработанном компанией Blockstream. Технология позволяет пользователям Liquid верифицировать, что полученные суммы не превышают отправленные суммы.
В контексте Liquid это среди прочего означает, что средства могут перемещаться между биржами и никто не будет знать, о каких именно суммах идет речь. Конкуренты не смогут знать, какие суммы хранятся на биржах, а трейдеры не смогут использовать такую информацию при торгах, что они нередко делают сегодня: публичная природа блокчейна дает возможность тем, кто располагает информацией о предстоящей крупной операции, заключить сделку для получения прибыли от изменения цен.
Модификация конфиденциальных транзакций, кольцевые конфиденциальные транзакции (Ring CT), применяется в криптовалюте Monero. Также модификации технологии применяются в криптовалюте Bitshares и в протоколе MimbleWimble, на котором работают криптовалюты Grin и Beam.
Конфиденциальные транзакции также можно имплементировать в основной протокол биткоина. Уже есть несколько идей, как это выполнить через обратно совместимый софтфорк, однако такие апгрейды все еще будут оказывать негативный эффект на масштабируемость и, скорее всего, по-прежнему далеки от реальности.
Что такое технология конфиденциальных активов (Confidential Assets)?
Кто и когда изобрел технологию конфиденциальных активов?
Технологию конфиденциальных активов изобрели разработчики Blockstream Эндрю Поэлстра, Адам Бэк, Марк Фриденбах, Грегори Максвелл и Питер Велле.
White paper Confidential Assets опубликовали на сайте Blockstream 3 апреля 2017 года. Компания анонсировала Confidential Assets в качестве новой опции для технологии сайдчейнов Sidechain Elements.
Как работает технология конфиденциальных активов?
В технологии конфиденциальных транзакций используется обязательство Педерсена, которое заменяет начальную сумму транзакции в блокчейне:
commitment = xG + a(H + rG)
Где a – это сумма транзакции, G и H – генераторы эллиптической кривой. G – константа. H представляет тип актива и принимает различные значения для различных конфиденциальных активов. X и r – это ослепляющий фактор.
Они настроены на различные случайные значения в каждом UTXO (неизрасходованный входящий остаток транзакции), с тем чтобы скрыть сумму транзакции и тип актива.
Подобная модель позволяет верифицировать баланс сумм входа и выхода для каждого актива в каждой транзакции. При этом верифицирующему известно обязательство, но не известна сумма транзакции и тип актива.
Данные о сумме транзакции и типе актива отправитель пересылает получателю в зашифрованном виде ончейн или офчейн в p2p-формате таким образом, что данные известны только двум сторонам транзакции.
В процессе эмиссии активов, их пересылки и уничтожения также необходимо задействовать процессы ZKP (Zero-Knowledge Proof) для доказательства того, что сумма транзакции и тип актива имеют приемлемое значение, не раскрывая при этом само значение. Доказательство для типа актива называется Surjection Proof.
Какие недостатки технологии конфиденциальных активов?
Имплементация технологии возможна только в новом блокчейне или посредством хардфорка существующего блокчейна.
К этому решению невозможно добавить смарт-контракты, поэтому невозможно кастомизировать логику конфиденциальных активов или создавать ончейн-приложения на их основе. Разработчики могут лишь реализовать определенную простую логику посредством такой схемы, как Scriptless Script.
Эту проблему решают технологии AZTEC, Zether, Anonymous Zether, PGC, Nightfall и другие. Во всех этих протоколах существующие блокчейн-решения конфиденциальных транзакций (zk-SNARK, MimbleWimble и др.) имплементированы с применением смарт-контрактов. Такая модель обеспечивает следующие свойства:
- Программируемость: смарт-контракты модифицируют логику эмиссии, уничтожения, передачи, обмена актива, расширяя набор функций и атрибутов конфиденциальных активов.
- Интероперабельность: конфиденциальные активы могут взаимодействовать с другими контрактами (токенами, аукционами, голосованиями), что дает возможность создавать больше различных приложений.
Где применяется технология конфиденциальных активов?
В проекте Elements технология конфиденциальных активов применяется к сети биткоина.
В имплементациях в системах на основе биткоина транзакционный процесс не интерактивен, то есть, получателю транзакции не нужно быть онлайн, чтобы осуществить транзакцию. В имплементациях в системах на основе MimbleWimble транзакционный процесс интерактивен.
В имплементациях конфиденциальных активов в системах на основе биткоина адреса обеих сторон не скрыты, в отличие от имплементаций в системах на основе MimbleWimble.
Технология также может быть имплементирована в системы на основе протокола MimbleWimble – Grin и Beam. Разработчики Beam такую возможность реализовали в рамках хардфорка Eager Electron 5.0 в июне 2020 года.
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!