Биткойн-транзакции хранятся в блокчейне в открытом виде. При этом конфиденциальность обеспечивается посредством псевдонимности, то есть каждая транзакция хранит информацию об адресах отправителя и получателя, но не содержит информацию о личностях владельцев[3]. Чтобы повысить конфиденциальность, каждый человек может создать столько публичных адресов, сколько захочет, что затрудняет связь транзакций с одним и тем же лицом. Для дополнительной конфиденциальности может использоваться доверенная третья сторона, когда входящие транзакции смешиваются в большом пуле и выводятся на новый адрес. Вне зависимости от мер предосторожности в некоторых случаях становится возможным связать набор общедоступных адресов с конкретным (неназванным) человеком путем анализа блокчейна. Например, может быть проведен анализ привычных расходов или транзакций, проходящих с одного общего адреса. Кроме того, используя внешнюю информацию относительно блокчейна, такую как публичные биткойн-адреса, размещенные на веб-сайтах, или адреса электронной почты, используемые при покупке биткойнов, существует вероятность того, что можно определить каждую биткойн-транзакцию отдельно взятого человека[4].
Протокол Zerocoin предлагает совсем иную систему, в которой при помощи специальной транзакции определенное и фиксированное количество криптовалюты, объединенной в токен, отправляется в условный «черный ящик». Затем, в некий момент времени, любой, кто положил токен в условный «черный ящик» может забрать из него токен, соответствующий вложенной сумме — при этом не обязательно тот, который он туда положил ранее. В результате подобных действий все следы токенов после прохождения «черного ящика» теряются — становится неизвестно, кто именно какие токены из него извлек. Система подобна миксеру, но при этом и сильно отличается от него — хранение токенов в «черном ящике» не ограничено по времени, и не зависит от третьих сторон — все происходит прямо на блокчейне[5][6].
История
Протокол Zerocoin был представлен профессором Университета Джонса Хопкинса Мэтью Грином и аспирантами Яном Миерсом и Кристиной Гарман в качестве дополнения к протоколу биткойн, которое добавит криптографическую анонимность в транзакции биткойн. Идея протокола была представлена в научной работе «Zerocoin: Anonymous Distributed E-Cash from Bitcoin»[7] на симпозиуме «IEEE Symposium on Security & Privacy»[8][9] в мае 2013 года и реализована в виде публичной альфа-версии[10].
В январе 2014 года было объявлено, что после публикации бета-версии, которая планировалась на август-ноябрь 2014 года[11][12][13], Zerocoin будет полностью независим от Bitcoin, в связи с тем, что договориться с сообществом разработчиков Bitcoin’а о внесении изменений в протокол не удалось, а для реализации Zerocoin в качестве дополнения требовалось расширение протокола Bitcoin.
18 декабря 2015 года на протоколе Zerocoin был запущен проект Монета[14][15]. Авторы протокола отметили, что ни Zerocoin, ни Монета не являются конкурентами Биткойн. Отмечено, что проекты служат для повышения анонимности.
28 сентября 2016 года состоялся релиз Zcoin. Данная криптовалюта использует концепт криптографических подтверждений с нулевым уровнем знаний. Более эффективно скрываются получатели и отправители[16].
28 октября 2016 на протоколе Zerocash была запущена криптовалюта Zcash[17]. В апреле 2017 года криптовалюта Zcash вошла в десятку криптовалют с наибольшей капитализацией. На пике капитализация составляла 62,5 миллионов долларов США. 22 мая 2017 Zerocoin Electric Coin Company заключил партнерство с JPMorgan, что привело к 84% росту стоимости Zcash[18].
Протокол Zerocoin
Расширение Zerocoin для биткойн действует как схема отмывания денег через трастовые компании, временно объединяющее биткойны с целью обмена на временную криптовалюту Zerocoin. Несмотря на то, что данная схема отмывания является уже существующей концепцией, использованной несколькими сервисами по отмыванию денег, Zerocoin выполняет все на уровне протокола, исключая любую зависимость от доверенной третьей стороны. Протокол анонимизирует обмены в пул и из него с использованием криптографии, а в качестве предлагаемого расширения к протоколу Биткойн он записывает транзакции в существующий блокчейн биткойн[19].
Анонимность, обеспечиваемая протоколом Zerocoin — результат криптографических операций, связанных с раздельным выпуском Zerocoin и расходными операциями. Чтобы получить Zerocoin пользователь генерирует случайный порядковый номер S и шифрует его в токен C с использованием второго случайного числа r. На практике C является схемой обязательств. Токен C добавляется к криптографическому аккумулятору[англ.] и в то же время количество биткойн, равное значению Zerocoin, добавляется в систему депозитов Zerocoin[20].
Чтобы выкупить Zerocoin в биткойн (желательно на новый публичный адрес) владелец токена должен получить доказательство с нулевым разглашением π для двух утверждений[21]:
Владелец знает токен C, который принадлежит к набору всех других выпущенных Zerocoin’ов (C1, C2,… Cn). На практике для доказательства этого факта, используется односторонний аккумулятор[англ.], который не показывает членов набора[22].
Владелец знает число r, которое вместе с порядковым номером S соответствует токену C.
Доказательство π и серийный номер S публикуются как расходная транзакция, в которой майнеры проверяют доказательство π и то, что серийный номер S ранее не использовался. После проверки транзакция отправляется в блокчейн, а количество биткойн, равное номиналу Zerocoin, переводится адресату. Анонимность транзакции гарантируется, так как выпущенный токен C не связана с серийным номером S, используемым для последующего выкупа токена[19].
Аккумулятор[англ.], используемый для доказательства с нулевым разглашением, должен быть повторно вычислен каждый раз, когда проводиться проверка расходной транзакции. Для упрощения перерасчета аккумулятора, предлагается при формировании нового блока сохранять текущее значение аккумулятора (создавать контрольную точку). При этом для вычисления нового значения аккумулятора нам будут требоваться только токены, выпущенные после формирования последнего блока, а не все доступные. Тем не менее стоит отметить, что в таком случае значение контрольной точки аккумулятора и все ранее использованные порядковые номера Zerocoin должны быть добавлены к каждому блоку биткойн, что увеличивает его размер (хотя и не существенно)[23].
Так как процесс проверки для Zerocoin намного более вычислительно сложен, чем для биткойн, время проверки для блока увеличилось бы до 6 раз в зависимости от соотношения между биткойн и Zerocoin. Предварительные тесты, выполненные разработчиками, показывают, что даже с увеличенным временем проверки и в два раза большим размером текущих блоков биткойн, время проверки для всего блока не должно превышать пяти минут, а так как новый блок биткойн в настоящее время создается в среднем каждые десять минут, увеличение времени проверки не должно быть проблемой[24].
Zcoin (XZC)
Zerocoin был впервые внедрен в качестве функциональной криптовалюты под названием Zcoin (XZC). Zcoin начал работу 28 сентября 2016 года в 12:00 UTC. Программное обеспечение testnet было впервые выпущено 18 декабря 2015 года под именем Moneta (а не Moneta Verde (MCN)) до того, как оно было названо Zcoin. Роджер Вер был одним из первых инвесторов Zcoin, также как и Zcash[25].
PIVX является первой Proof-of-stake криптовалютой, использовавшей протокол Zerocoin. Это случилось 16 октября 2017 года. Токены Zerocoin PIVX известны как zPiv. В истории криптовалюты принято выделять 2 важные вехи — первая — с момента появления криптовалюты по середину августа 2016 года — PoW период и вторая — с 17 августа — PoS период. Криптовалюта представляет из себя форк DASH с открытым исходным кодом[26].
SmartCash (SMART)
SmartCash (SMART) — криптовалюта на основе протокола Zerocoin, использующая для майнинга алгоритм Keccak SHA-3. Сообщается, что данная криптовалюта управляется сообществом. 80 % вознаграждения за каждый намайненный блок было выделено для финансирования предложений сообщества SmartHive. Команда проекта выделила 70 % бюджета для финансирования проектов, которые хотели бы реализовать участники сообщества, оставив 30 % для обслуживания системы и прочих потребностей[27].
ZeroVert (ZER)
ZeroVert (ZER) — криптовалюта на основе алгоритма Scrypt-N, выпущенная в цепочке VTC общим тиражом 8,4 млн. ZER. Разработчики криптовалюты утверждают, что уровень анонимности «устанавливается на значительно более высокую величину», чем в Биткойн и других популярных криптовалютах. Количество транзакций, не различимых для стороннего наблюдателя, составляет миллионы транзакций (а не сотни)[28].
Протокол Zerocash
16 ноября 2013 года была анонсирована улучшенная версия протокола, которая уменьшает размеры доказательств на 98% и допускает прямые анонимные платежи, которые скрывают сумму платежа[29]. Разработчики представили свою техническую документацию на Симпозиуме безопасности и конфиденциальности IEEE 2014 вместе с запуском сайта[30].
Новый протокол назывался Zerocash. Теперь это не расширение к Биткойн, а скорее независимая технология с теми же основными принципами. Данная технология позднее была реализована в виде альтернативной криптовалюты Zcash. Zerocash использует кратковременные неинтерактивные аргументы знания без знания (также известные как zk-SNARK), особый метод создания доказательства с нулевым разглашением. Такие доказательства имеют длину менее 300 байтов и могут быть проверены всего за несколько миллисекунд. Однако для zk-SNARKs требуется большая исходная база данных для проверки (около 1,2 ГБ) и длительное время для получения доказательства: от 87 до 178 секунд[31].
Между 5 октября 2015 года и 11 января 2016 года веб-сайт Zerocash стал отмечать, что «протокол Zerocash превращается в полноценную цифровую валюту Zcash»[32]. 28 октября 2016 года официально прошел успешный запуск криптовалюты Zcash[33]. Платежи криптовалюты Zcash записываются в общедоступную цепочку блоков, данные об отправителях, получателях и суммах являются приватными[34].
Christina Garman, Matthew Green, Ian Miers, Aviel D. Rubin. Rational Zero: Economic Security for Zerocoin with Everlasting Anonymity (англ.) // Financial Cryptography and Data Security. : сборник. — Springer, Berlin, Heidelberg, 2014. — 8 October. — P. 140 — 150. — ISBN 978-3-662-44773-4. — doi:10.1007/978-3-662-44774-1_10.