Как работает Zerocash

Делитесь и голосуйте:

Zerocash — это протокол децентрализованной криптовалюты, которую, как и Биткойн, совместными усилиями обслуживают ее пользователи, транслируя и проверяя платежные транзакции. Однако Zerocash отличается от Биткойна тем, как осуществляется сбор этих платежных транзакций и их проверка.

В Биткойне платежная транзакция состоит из исходного адреса, целевого адреса и суммы платежа. Эти транзакции объединяются в блоки и сохраняются в децентрализованной базе данных, которая называется блокчейн. Поскольку блокчейн общедоступен, любой может просмотреть историю всех транзакций с помощью ПО Биткойна или любой из служб мониторинга блокчейна. Хотя биткойн-адреса не связаны явно с реальными идентичностями пользователей, в нескольких недавних работах было показано, что возможен майнинг блокчейна с целью получения информации о платежных привычках пользователей. Zerocash расширяет биткойн-протокол, добавляя в него новые типы транзакций, которые предоставляют отдельную валюту, сохраняющую конфиденциальность; в этой валюте транзакции не разглашают ни источник, ни назначение, ни сумму платежа. Zerocash — это отдельная анонимная валюта, существующая наряду с (неанонимной) базовой валютой, которую мы будем называть «Бейскойном»). Каждый пользователь может преобразовать (неанонимные) бейскойны в (анонимные) зерокеш-койны, которые мы будем называть зерокойнами. Пользователи могут затем отправлять зерокойны другим пользователям, а также как угодно объединять или разделять имеющиеся у них зерокойны с сохранением их общей суммы. Пользователи могут также преобразовывать зерокойны обратно в бейскойны, хотя, в принципе, это не обязательно: все платежи совершаются в терминах зерокойнов.

Zerocash-транзакции

Функционал Zerocash реализован с использованием двух новых типов транзакций: чеканки (mint) и утечки. (pour) Как и биткойн-транзакции, Zerocash-транзакции транслируются по сети и добавляются в децентрализованный журнал.

Транзакции чеканки. Транзакция чеканки позволяет пользователю преобразовать указанное количество неанонимных биткойнов (с некоторых биткойн-адресов) в то же количество зерокойнов, принадлежащих указанному Zerocash-адресу. Сама транзакция чеканки состоит из криптографического обязательства по отношению к новой монете, которое указывает ценность монеты, адрес ее владельца и ее (уникальный) серийный номер. Обязательство основано на хеш-функции SHA-256 и скрывает значение монеты и адрес ее владельца. Отдельные узлы Zerocash поддерживают дерево Меркла, покрывающее все обязательства по отношению к монетам, виденные на текущий момент. Любой пользователь может продемонстрировать владение обязательством по отношению к монете, обнародовав его значение и кратко засвидетельствовав членство в дереве. К сожалению, простая публикация этой информации в качестве «подтверждения владения» не является конфиденциальной; вместо этого для достижения конфиденциальности мы используем второй тип транзакций, которые позволяют пользователю с нулевым разглашением доказать, что он знает такие данные.

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

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

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

Проверка Zerocash-транзакций

Для транзакции чеканки содержащиеся в ней обязательства конструируются так, чтобы любой мог убедиться, что монета с обязательством имеет заявленное значение. Что касается транзакции утечки, то любой может убедиться, что содержащееся в ней доказательство с нулевым разглашением действительно (и что несколько других простых инвариантов остались прежними). Однако ради эффективности в Zerocash не используется «никакое» доказательство с нулевым разглашением; вместо этого в ней используются системы кратких неинтерактивных аргументов знания с нулевым разглашением (zeroknowledge Succinct Noninteractive ARguments of Knowledge, zkSNARK) — доказательства с нулевым разглашением, которые особенно коротки и легки для проверки. Если вас интересуют детали, то в Zerocash используются zk-СНАРКи, которые сконструированы в SCIPR Lab и были описаны в BCTV14; такие доказательства занимают менее 300 байт и могут быть проверены за несколько миллисекунд.

Источник: zerocash-project.org

Государство и общество

Ждем новостей

Нет новых страниц

Следующая новость