Zcash и Zcoin: сходство и различия

Zcash и Zcoin: сходство и различия
 
В последнее время часто задают такой вопрос: «Чем же все-таки различаются Zcoin и Zcash?»
Zcoin и Zcash - это две единственные криптовалюты, которые используют технологию доказательства с нулевым разглашением и являются совершенно анонимными. На самом деле между ними существует довольно сильная путаница. Zcoin использует Zerocoin Protocol (данная статья на английском уже цитировалась в научных работах 208 раз), а Zcash - Zerocash Protocol (эта статья на английском цитировалась 104 раза).
 
Между Zcoin (протоколZerocoin) и Zcash (протокол Zerocash) существует несколько существенных различий:

1) Zcash может скрывать сумму транзакций, а Zcoin не имеет подобной функции.
 
Благодаря этому, Zcash, в отличие от Zcoin, мало поддается атакам по времени, или тайминг-атакам (атаки по сторонним каналам), но в то же время это является угрозой: в Zcash существует возможность неограниченной инфляции (неограниченной эмиссии электронных монет), которую невозможно будет обнаружить. Что касается Zerocoin, то тайминг-атака возможна, если в момент генерации монет одним из пользователей воспользоваться его данными.
Протокол Zerocoin включает два основных этапа. Первый - «генерация Zerocoin», когда «public coin» (монета, информация о вычислении которой открыта) попадает в накапливающий регистр («accumulator»). Накапливающий регистр определяет, соответствует ли поступившая информация запросу пользователя, не раскрывая при этом его ID. Второй этап - «расходование Zerocoin», когда можно воспользоваться доказательством с нулевым разглашением, чтобы подтвердить, что одна из сторон владеет монетами в накапливающем регистре, не раскрывая информации о монетах. Как только подтверждение «расходования Zerocoin» получено, можно создать новую монету Zcoin без записи в историю транзакций.
Т.к. каждый Zerocoin перед тем, как стать анонимной монетой в процессе «расходования», должен пройти этап «генерации», то проанализировав тайминг между этими двумя этапами можно осуществить атаку. Если пользователь сразу после этапа «генерации» приступит к «расходованию», то есть вероятность того, что прямая связь между открыто сгенерированным Zerocoin и анонимно расходованным Zerocoin будет обнаружена. Однако, если пользователь приступит к этапу «генерации» с некоторой задержкой во времени, то сможет предотвратить тайминг-атаку.
Поскольку ZCash скрывает даже сумму транзакции, данная криптовалюта менее подвержена тайминг-атакам. Но и здесь таится своя угроза.
Дело в том, что пользователям Zcash придется довериться системе, где подтверждения основаны на принципах, понятных только немногочисленным математикам и криптографам, какой бы «безукоризненной» она не была. Zk-Snark использует необыкновенно сложное шифрование. Вот у криптографических принципов Zerocoin за плечами длинная история, и работы на эту тему цитировались научными работниками не раз. К тому же, они понятны практически любому специалисту в области криптографии.
Главный баг Zcahs состоит в том, что кто-то может анонимно и без ограничений генерировать монеты, и никто об этом не узнает. С помощью этого бага можно чрезмерно увеличить денежную массу и взять рынок в свои руки. Примеров, когда такое изменение денежной массы приводило к обвалу рынка, немало. Классический пример - баг, приведший к инфляции биткоин в 2010 году, из-за которого общее количество монет достигло 90 млрд.
15 августа 2010 года в Bitcoin-блоке 74638 произошла т.н. «грязная» транзакция, в ходе которой было создано 184 467 440 737.09551616 биткоинов для трех адресов. Два из них получили по 92,2 млрд. биткоинов, а обнаружившие этот блок пользователи получили по 0.01 не существовавших до транзакции биткоина. По мнению аналитиков, хакер воспользовался брешью в системе проверки транзакций, которая не предусматривала ввода таких огромных цифр в хеш.
В Zcash такой трюк пройдет тихо и незаметно. Если в системе Zcash действительно существует данный баг, то хакер, при полном неведении остальных, может завладеть 99,9% рыночной капитализации этой криптовалюты.
Одной из последних жертв хакеров стала организация The DAO, которая подверглась криптовалютной атаке на сумму 50 млн. долларов США.
Грэг Слипэк (Greg Slepak) в своем блоге okTurtles Blog писал:
Такая ситуация будет намного опаснее для Zcash, ведь код Zcash на порядок длиннее и сложнее, чем код The DAO, а значит и последствия ошибки будут на порядок серьезнее. Текущее состояние Zcash таково, что узнать о состоявшейся атаке - невозможно. С оговоркой, что сам хакер не окажется осведомителем, хотя даже в этом случае информация об атаке будет известна уже постфактум. Так что чем выше стоимость Zcash, тем выше риск ее обвала. В этой сети нет кнопки «Отменить».
Кроме того, существует другая проблема. Из-за «мудреной» технологии ZK-Snarks адекватная экспертная оценка базовых криптографических принципов Zerocash представляется невозможной. В противоположность, Zerocoin лишена таких забот. Как уже отмечалось, специалистов, способных понять технологию шифрования Zcash, очень мало. Не исключено, что в какой-то момент эти высококлассные эксперты перешагнут границы дозволенного и поддадутся соблазну завладеть многомиллионным капиталом Zcash. В Zcoin все иначе: даже в случае атаки любой пользователь способен обнаружить изменения в общем количестве монет.
 
2) Параметры криптографического алгоритма.

Zcoin использует криптографический алгоритм 25-летней давности - RSA, в основу которого положена сложность задачи факторизации и безопасность которого проверена временем. До сих пор Zcoin сочетает старые алгоритмы с новыми криптографическими проектами. Бесспорным является тот факт, что на протяжении уже нескольких лет RSA не может считаться значительной компанией только благодаря своему сотрудничеству с Агентством национальной безопасности США. Но с одной стороны, использующийся сейчас криптографический алгоритм с задачей факторизации RSA был создан еще в 1991 году, это был ранний этап в истории развития компании, когда ее основатель еще держал в своих руках большую часть решений. С другой стороны, механизм Zcoin обеспечивает малую вероятность обрушения системы из-за атаки: любой пользователь имеет возможность наблюдать за колебаниями общего количества монет.
Что касается Zcash, для нее заданным условием является невозможность соучастия разработчиков параметров криптографического алгоритма в хакерских атаках. Для ощущения полной безопасности достаточно хотя бы одного беспристрастного и честного человека среди них, который никогда бы не преступил закон. В противном случае, все они беспрепятственно могут совершать, к примеру, двойное расходование («double-spending»).
Как бы то ни было, мы считаем, что данный механизм Zcash приемлем, ведь зачастую даже один честный человек из числа разработчиков способен предотвратить атаки. И хотя криптографические механизмы обеих криптовалют не являются идеальными, они вполне могут нормально функционировать.
 
3) Zcash предъявляет высокие требования к оперативной памяти, при этом требует намного больше времени на проведение транзакций, чем Zcoin. С другой стороны, у Zcoin больше требований к физической памяти.

Приведем результаты сравнительного теста производительности Zcash:
«В ходе тестирования на четырехъядерном процессоре для совершения одной анонимной транзакции потребовалось 3.2GB памяти и 50 секунд на вычисление».
Это довольно высокое требование, т.к. оперативная память большего числа ноутбуков составляет всего 4GB. Даже при оперативной памяти 8GB, требуемые для транзакции 3.2GB могут занять определенное пространство для свопинга на жестком диске. В этом случае даже на современных SSD-накопителях транзакция будет проходить в 10 раз медленнее, чем на DDR-3. А на старых устройствах - в 30 раз медленнее. Поэтому, если говорить об обычных устройствах с оперативной памятью 4GB, время вычисления транзакции Zcash может варьироваться от 10 до 30 минут. Так много времени - на одну анонимную транзакцию.
При тестировании Zcoin на четырехъядерном процессоре для вычисления одной анонимной транзакции понадобилось 10 секунд. Таким образом, вычисление анонимной транзакции в Zcoin в 5-200 раз быстрее, чем в Zcash. Конечно, скорость вычисления будет различаться в зависимости от оборудования.
С другой стороны, размеры анонимной транзакции Zcoin в 50 раз больше, чем в Zcash. Но это не является ограничением. Zcoin допускает поправки, в результате которых проблема масштабирования будет решена.
Сатоши Накамото в своей «Белой книге» затрагивал вопрос «обрезания» как способ масштабирования будущего Bitcoin. Так, когда спрос на транзакции Zcoin превысит возможности сети, разработчики могут встроить обрезание в протокол.
Это может быть сделано в точности согласно описанию Сатоши, путем обрезания лишних «ветвей» дерева Меркла:
«Если последние транзакции были записаны в достаточное количество блоков, данные прошлых транзакций могут быть удалены для того, чтобы освободить место на жестком диске. Чтобы сделать это без повреждения блок-хеша, нужно хешировать транзакции в виде дерева Меркла, а в блок-хеш включать только его «корень» (Root Hash, или TTR). Таким образом, старые блоки «упаковываются», после чего остальные «ветви» хеш-дерева не требуют хранения».
Иллюстрация данной схемы из «Белой книги» Сатоши:

 

На текущий момент вместимости Zcoin более чем достаточно, и даже если размер транзакций будет в 50 раз больше, проблемы с памятью не возникнет. Сатоши об этом тоже писал:
«В 2008 году типичный компьютер обладал 2GB оперативной памяти, а согласно закону Мура, ОЗУ будет увеличиваться на 1.2GB ежегодно; в таком случае проблем не возникнет, даже если хранить данные о всех прошлых транзакциях».
Можно констатировать, что разнообразие сетей, использующих доказательство с нулевым разглашением, - благословение для криптосообщества. Как и Zcoin, Zcash прилагает все усилия к повышению уровня конфиденциальности для осуществления свободной и приватной коммерческой деятельности. Обе команды разработчиков достойны похвалы. Однако следует помнить, что и у Zcoin, и у Zcash есть свои недостатки и достоинства. Зная о них, пользователи, ориентированные на конфиденциальные транзакции, могут выбирать ту или иную криптовалюту сообразно собственным ожиданиям и нуждам.
Наш бот в Telegram:
@MiningZonebot
Наш канал Telegram:
06:14
660