Zcash

Из Википедии, бесплатной энциклопедии

Zcash
Логотип программы Zcash
Тип Платёжная система
Автор William Scott
Разработчик Zerocoin Electric Coin Company (ZECC)
Написана на C++[1]
Операционные системы Linux, Windows, macOS (модификации)[2][3]
Первый выпуск 28 октября 2016 года
Последняя версия 5.9.1 (24 мая 2024)
Репозиторий github.com/zcash/zcash
Состояние активное
Сайт z.cash
Логотип Викисклада Медиафайлы на Викискладе

Zcash — криптовалюта с открытым исходным кодом, разработанная компанией Zerocoin Electric Coin Company[4], обеспечивающая конфиденциальность и выборочную прозрачность транзакций. Платежи Zcash публикуются в общедоступной цепочке блоков, но отправитель, получатель и сумма транзакции остаются тайными[5]. Торговый знак Zcash, ZEC, не является официальным ISO 4217. Минимальная передаваемая величина — 10−8 ZEC — получила название «затоши», подобно «сатоши» — аналогичному количеству биткойна. Как и Биткойн, Zcash имеет фиксированный максимальный общий запас в 21 миллион единиц[6]. Текущее среднее время создания блока — 75 секунд (1,25 минуты)[7]. Анонсирована 20 января 2016 года[8][9].

Уровень анонимности Zcash отмечают многие известные компании и личности. Например, WikiLeaks начала принимать пожертвования в Zcash[10], Эдвард Сноуден, который был одним из разработчиков, назвал криптовалюту самой интересной альтернативой Биткойну[11], а Европол официально выразил обеспокоенность ростом популярности криптовалюты[12].

Другими популярными анонимными криптовалютами со схожим назначением являются Monero и Dash.

В 2014 году разработчиками Zerocoin из Университета Джонса Хопкинса и группами криптографов из Массачусетского технологического института, Технологического института Израиля и Тель-Авивского университета был разработан протокол «Zerocash». Вместе они смогли улучшить протокол, сделав его более эффективным и более анонимным.

«Благодаря новому протоколу Zerocash, в отличие от Zerocoin, пользователи могут осуществлять прямые платежи друг другу с помощью значительно более эффективного криптографического протокола, который скрывает не только происхождение, но и сумму платежа»[13].

Проект Zcash был официально объявлен исполнительным директором Зуко Вилкоксом (Zooko Wilcox)[англ.] 20 января 2016 года как эволюция существующего проекта Zerocoin (работа Мэтью Грина, Яна Майера, Кристины Гарман, Авиэль Д. Рубин, в Университете Джонса Хопкинса, факультет компьютерных наук)[8].

С использованием нового протокола появилась самостоятельная криптовалюта Zcash (ZEC), переставшая быть «дополнением» к биткойну. 28 октября 2016 года Зуко Уилкоксом была проведена официальная «криптографическая церемония» запуска Zcash[14].

Особенности

[править | править код]

Zcash является первой криптовалютой[15], основанной на криптографическом протоколе доказательства с нулевым разглашением. В логике работы протокола предполагается, что одна из взаимодействующих сторон способна убедиться в достоверности математического утверждения, не имея при этом никакой другой информации от второй стороны[16]. Фактически Zcash является первой по-настоящему анонимной криптовалютой, так как можно подтвердить, что транзакция была совершена, но нет возможности узнать сумму, отправителя и получателя[17].

Программное обеспечение Zcash выдаёт ряд случайных значений, которые принимаются в качестве исходных параметров. Также оно генерирует фрагменты криптографического ключа, которые вместе могут использоваться для генерации новых ZEC. На церемонии запуска 28 октября было показано, как происходит создание и распространение этих фрагментов криптографического ключа так, что сам ключ никогда не оказывается доступен целиком[18].

Протокол Zcash не сохраняет информацию о том, с какого адреса была проведена транзакция, на какой адрес было зачисление и какова сумма; виден только факт совершения транзакции. Информация о транзакции в блокчейне может быть открыта или скрыта по желанию пользователей, что является отличительной чертой Zcash[19].

Принцип работы

[править | править код]

Zcash шифрует содержимое защищённых транзакций. Для проверки достоверности использует криптографический протокол zk-SNARK[англ.] (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), разработанный создателями криптовалюты на основе доказательства с нулевым разглашением. Протокол позволяет формировать безопасный реестр остатков без раскрытия соответствующих сторон или сумм, но при этом нельзя доказать, что транзакция не является обманом или воровством. Zcash также позволяет пользователям создавать публичные транзакции, аналогично транзакциям в Биткойн. Одной из особенностей Zcash является то, что отправка значений с защищённых адресов на открытые раскрывает информацию о балансе защищённого адреса, в то время как отправка с открытых на защищённые сохраняет конфиденциальность[20][21].

Для того, чтобы обладать нулевым разглашением в Zcash, функция, определяющая истинность транзакции в соответствии с правилами сети, должна возвращать ответ о том, истинна ли транзакция или нет, без раскрытия какой-либо информации о выполненных действиях. Это достигается кодированием некоторых правил консенсуса сети в zk-SNARK. На высоком уровне zk-SNARK превращает то, что вы хотите доказать, в эквивалентную форму знания решения некоторых алгебраических уравнений[22]. Конструкции zk-SNARK могут быть применены в широком спектре приложений, обеспечивая достаточно высокую эффективность и разнообразную функциональность[23].

Ключи и адреса

[править | править код]
Схема показывает соотношения между частями ключей. Стрелки показывают, какая часть может быть образована из другой части.

Пользователи, желающие получать выплаты, генерируют ключевой кортеж, состоящий из ключа расходов, ключа просмотра и платёжного адреса. Ключ просмотра и платёжный адрес образуются из ключа расходов. Обычно набор из платёжного адреса, ключа просмотра и ключа расходов зашифрован и недоступен пользователям. Но так как Zcash может обеспечить публичные транзакции, то информация об этих ключах может быть предоставлена по запросу[24].

Записка (note) — это кортеж, состоящий из платёжного ключа, значения (исчисляется в затоши), обнуляющей последовательности и случайной битовой последовательности — ловушки передачи. Записка означает, что значение может быть потрачено получателем, у которого есть ключ расходов , соответствующий платёжному ключу . При отправке записки публично доступна только принадлежность указанным значениям, что позволяет сохранить конфиденциальность самого значения и получателя, в то время как принадлежность используется доказательством нулевого разглашения для проверки существования записки в блокчейне[25].

Блокчейн и транзакции

[править | править код]

В заданный момент времени каждой полной ноде соответствует некоторый набор блоков, которые образуют дерево, в котором каждый узел связан с родительским с помощью заголовка блока hashPrevBlock. Путь от корня до узлов, проходящий через последовательность валидных блоков, удовлетворяющих правилам консенсуса, называется валидной цепочкой блоков[26].

Каждый блок в цепочке содержит одну или несколько транзакций. Ввод добавляет значения в пул, вывод удаляет из пула; как и в Биткойне, остаток в пуле является вознаграждением майнеров. Правило консенсуса здесь таково: остаточное значение в открытом пуле должно быть неотрицательно[27].

Каждой транзакции соответствует исходное состояние дерева. Состояние описывается деревом передачи записок, обнуляющей последовательностью и структурами, аналоги которых есть у Биткойна (например, UTXO[англ.][28]).

По состоянию на июнь 2021 года размер блокчейна составлял 32 GB[7].

JoinSplit-описание — это часть данных транзакции, описывающая передаваемое значение. JoinSplit является одним из основных параметров технологии zk-SNARK и свойственен только Zcash. JoinSplit-описание основано на JoinSplit-утверждениях (но не отождествляется с ними), используемых для верификации zk-SNARK. Каждое новое JoinSplit-описание зависит от выходного значения в предыдущем блоке[29].

Дерево передачи записок

[править | править код]

Дерево передачи записок — это инкрементное дерево Меркла заданной глубины, в котором хранятся записки, создаваемые JoinSplit. По аналогии с UTXO, оно используется для описания текущего значения и возможности его использовать, но отличие от UTXO в том, что это дерево не защищает от двойных трат[30].

Обнуляющая функция

[править | править код]

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

Вознаграждение майнеру

[править | править код]

Эмиссия в Zcash происходит так же, как и в Биткойн — при создании новых блоков. Награда за создание блока состоит из двух частей — награды, выделенной майнеру в транзакциях, и так называемой награды основателей, которая составляет 20 % стоимости блока в первые 4 года существования Zcash, а в итоге будет составлять 10 % объёма всех выпущенных ZEC.

Преимущества

[править | править код]
  • Взаимозаменяемость. Между монетами нет различия, независимо от того, каким путём они были получены[31].
  • Невозможность компрометирования. История происхождения монеты не может быть установлена[31].
  • Гарантированная анонимность: при осуществлении транзакций с использованием протокола доказательства с нулевым разглашением о транзакции могут знать только отправитель и получатель[32][15] . При этом по состоянию на май 2020 года 99,9 % пользователей Zcash не использовали функционал анонимизации транзакций в полной мере и предпочитали осуществлять обычные транзакции с использованием псевдонимов[33] . Это в свою очередь может свидетельствовать о низкой востребованности эксклюзивных опций, доступных в Zcash.
  • Неотслеживаемость транзакций. Протокол zk-SNARK скрывает любые внешние данные, кроме временной отметки[34].


Примечания

[править | править код]
  1. Zcash - Internet money. Github.com. Дата обращения: 22 ноября 2017. Архивировано из оригинала 14 октября 2017 года.
  2. zcash4win v1.0.11. A zcash wallet and full node for Windows. Дата обращения: 22 ноября 2017. Архивировано 28 февраля 2022 года.
  3. zcash4mac v1.0.4. A zcash wallet and full node for macOS. Дата обращения: 22 ноября 2017. Архивировано из оригинала 4 октября 2017 года.
  4. Zcash - About. Дата обращения: 22 ноября 2017. Архивировано 8 октября 2017 года.
  5. "Эдвард Сноуден: Zcash решит проблему конфиденциальности Биткоина". Bits.Media. 2016-06-09. Архивировано 18 апреля 2017. Дата обращения: 18 октября 2017.
  6. "Zcash, a Harder-to-Trace Virtual Currency, Generates Price Frenzy". The New York Times (англ.). 2016-10-31. Архивировано 5 сентября 2017. Дата обращения: 18 октября 2017.
  7. 1 2 https://zecpages.com/RuZcash. Zcash - Network Information (англ.). https://z.cash/ (27 июня 2021). Дата обращения: 22 ноября 2017. Архивировано 23 февраля 2019 года.
  8. 1 2 Zcash - Hello, World. Zcash Blog (20 января 2016). Дата обращения: 30 октября 2017. Архивировано 5 июля 2017 года.
  9. "Анонсирована криптовалюта Zcash, обеспечивающая анонимность транзакций". OpenNews. 2016-01-21. Архивировано 8 октября 2017. Дата обращения: 18 октября 2017.
  10. "WikiLeaks начала принимать пожертвования в Zcash". CoinMarket.News. 2017-08-07. Архивировано 13 октября 2017. Дата обращения: 16 октября 2017.
  11. "Эдвард Сноуден: Zcash — самая интересная альтернатива биткойну". CoinMarket.News. 2017-09-30. Архивировано 13 октября 2017. Дата обращения: 16 октября 2017.
  12. "Европол официально выразил обеспокоенность криптовалютами Zcash, Monero и Ether". CoinMarket.News. 2017-10-04. Архивировано 13 октября 2017. Дата обращения: 16 октября 2017.
  13. Zerocash: Decentralized Anonymous Payments from Bitcoin (extended version), 2014, pp. 1.
  14. Morgen Peck. A Blockchain Currency That Beats Bitcoin On Privacy. IEEE Spectrum (18 ноября 2016). Дата обращения: 30 октября 2017. Архивировано 17 ноября 2017 года.
  15. 1 2 Zcash - How zk-SNARKs work in Zcash. Дата обращения: 30 октября 2017. Архивировано 24 октября 2017 года.
  16. Matthew Green. Zero Knowledge Proofs: An illustrated primer. Архивировано 3 октября 2017 года.
  17. A Lesson in anonymity: Bitcoin, Dash, Monero and Zcash. Дата обращения: 21 ноября 2017. Архивировано 8 июня 2017 года.
  18. Zcash - Parameter Generation. Дата обращения: 21 ноября 2017. Архивировано 1 декабря 2017 года.
  19. Hertig, Alyssa Hardly Anyone Seems to Be Using Zcash's Anonymity Features (англ.). Coindesk (13 января 2017). Дата обращения: 8 октября 2017. Архивировано 9 октября 2017 года.
  20. Zcash - Anatomy of A Zcash. Дата обращения: 21 ноября 2017. Архивировано 23 сентября 2017 года.
  21. Zcash - How Transactions Between Shielded Addresses Work. Дата обращения: 21 ноября 2017. Архивировано 1 декабря 2017 года.
  22. Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, Madars Virza. Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture. — 2015. — 19 мая. — С. 9. Архивировано 28 сентября 2017 года.
  23. Zero-knowledge proofs, Zcash, and Ethereum. Дата обращения: 21 ноября 2017.
  24. Pavel Tarasov, Hitesh Tewari. Internet Voting Using Zcash. — С. 6. Архивировано 9 июля 2017 года.
  25. Zcash Protocol Specification, 2017, pp. 8.
  26. Zcash Protocol Specification, 2017, pp. 8—9.
  27. Zcash Protocol Specification, 2017, pp. 9.
  28. Unspent Transaction Output, UTXO. Bitcoin.org. Дата обращения: 30 октября 2017. Архивировано 18 октября 2017 года.
  29. Zcash Protocol Specification, 2017, pp. 9—10.
  30. 1 2 Zcash Protocol Specification, 2017, pp. 10.
  31. 1 2 What Investors Should Know Before Trading Zcash. CoinDesk. Дата обращения: 13 ноября 2017. Архивировано 9 ноября 2017 года.
  32. New Digital Currency Zcash Promises Total Anonymity and Privacy. Bitcoin Magazine (17 февраля 2016). Дата обращения: 13 ноября 2017. Архивировано 14 ноября 2017 года.
  33. "Исследование: 99,9% пользователей Zcash не используют все возможности монеты". ForkLog. Архивировано 10 июня 2020. Дата обращения: 10 июня 2020.
  34. Zcash: Financial Privacy Heaven or a New Crime Facilitator? Upcom.eu. Дата обращения: 13 ноября 2017. Архивировано из оригинала 14 ноября 2017 года.

Литература

[править | править код]