Достигаем максимальный уровень конфиденциальности с помощью YWallet.

Все новости про Zcash в Twitter  |  Интересные видео про Zcash на YouTube

Автор статьи и кошелька YWallet: Hanh Huynh Huu

Переведено, дополнено информацией и примечаниями: RuZcash (13.12.2022)

Использовались материалы сайта Zcash-документации

Технологии, применяемые в Zcash позволяют достичь самого высокого уровня конфиденциальности среди всех популярных криптовалют. Zcash предлагает полностью зашифрованные* транзакции, которые не раскрывают никакой информации об отправителе и получателе средств.

* популярные аналоги предлагают конфиденциальность в системе приманок или вовсе микшированием транзакций — подробное видео-объяснение.

Однако это не означает, что абсолютно любая ZEC-транзакция по умолчанию имеет наивысший уровень конфиденциальности, потому что в Zcash пользователь самостоятельно определяет необходимый ему уровень конфиденциальности.

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

В этой статье мы обсудим, как именно работают защищенные транзакции и рассмотрим это на примере кошелька Ywallet, который позволяет обеспечить максимальный уровень конфиденциальности транзакций.

Виды пулов, адресов и транзакций

Прозрачный пул

У Zcash есть несколько пулов (Примечание: от англ. Pool — бассейн) для ZEC-активов. По сути это можно представить так, как будто у Zcash есть несколько внутренних токенов ZEC, которые можно обменивать 1 к 1, но с разными свойствами конфиденциальности.

Если вы используете прозрачный адрес (его легко можно узнать по символу ‘t’ в начале адреса), то ваши монеты не зашифрованы и находятся у всех на виду, также как и BTC в сети Bitcoin.

Причём это будет справедливо как для отправителя, так и для получателя транзакции.

Прозрачные адреса работают аналогично адресам Bitcion и не обеспечивают конфиденциальность для пользователей.

Когда вы отправляете монеты на t-адрес, то отправленная сумма всегда видна в блокчейне, так как t-адреса полностью прозрачны для обозревателей блокчейна. Далее, если получатель переводит эти средства на следующий t-адрес, то в таком случае адреса как отправителя, так и получателя являются общедоступными. Прозрачные транзакции в сети Zcash принято называть “t2t-транзакции”.

Защищенные пулы

Чтобы воспользоваться функцией конфиденциальности Zcash, необходимо использовать защищенные (экранированные) адреса, попадая на которые, монеты становятся скрытыми от просмотра в обозревателях блокчейна.

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

Экранированные адреса и суммы, отправленные им или от них, являются закрытыми для просмотра.

К сожалению, далеко не каждый кошелёк поддерживает защищённые транзакции. Это связано с тем, что самый первый протокол экранированного пула был очень ресурсоёмкий и имел высокие требования к процессору и памяти устройства. Поэтому изначально экранированные ZEC-транзакции можно было использовать только на компьютерах и расчёт одной такой транзакции занимал достаточно много времени. Вторая версия протокола имела усовершенствованную архитектуру с использованием доказательств с нулевым разглашением и она существенно понизила требования к устройству. Поэтому удобные мобильные кошельки для экранированных транзакций стали доступны совсем недавно и даже сейчас они продолжают существенно усовершенствоваться. Текущая — третья версия протокола открывает дорогу к ещё более лёгким расчётам ZKP. И это даёт уверенность говорить о том, что популярность экранированных транзакций будет расти вместе с появлением поддержки всё большим числом кошельков. Некоторые из мульти-валютных кошельков добавляют поддержку экранированных адресов — полный список.

Итак, прежде всего, вам нужен кошелек, который поддерживает защищенный ZEC, такой как YWallet (Примечание: автор статьи является автором данного кошелька). Поскольку все ключи для ваших ZEC-адресов находятся только на вашем устройстве, то кошелькам требуется синхронизация с блокчейном. Защищённые адреса подразумевают надёжное шифрование, поэтому сам процесс синхронизации несколько более сложный, чем синхронизация прозрачных блокчейнов. Поэтому основной негативный пользовательский опыт связан именно с длительностью процесса синхронизации. Авторы кошельков постоянно улучшают этот процесс, поэтому в статье мы не приводим конкретные значения времени, во многом это также зависит от характеристик вашего устройства.

Я рекомендую попробовать это самостоятельно, чтобы оценить скорость синхронизации. Но это не станет чем-то неразумным и конфиденциальность Zcash стоит того, что использовать именно защищенные кошельки, адреса и транзакции.

Примечание RuZcash: Заявленная скорость ускоренной, но полноценной «WARP»-синхронизицации YWallet составляет 10 000 блоков в секунду! на смартфоне OnePlus 7T — Snapdragon 855+

По моим замерам на MacBook Air M1 на полную синхронизацию с генезис блока потребовалось около 27 минут. Причём большая часть времени заняла синхронизация последнего периода с начала спам-атаки на сеть. Первые 1,7 млн блоков кошелёк пролистал за ~4 минуты — что примерно соответствует заявленному 10000 в секунду при нормальной загрузке блока.

Ещё немного информации по поводу трёх защищенных пулов:

  1. Самый первый пул Sprout устарел и все актуальные кошельки его не поддерживают (такой тип адресов начинается с «zc«).
  2. В настоящее время самым большим используемым пулом является Sapling (такой тип адресов начинается с «zs«).
  3. Новый экранированный пул Orchard был запущен в июле 2022. Приложения, которые поддерживают этот пул только начали появляться. (Новый тип адресов имеет вид u-адрес Унифицированный адрес, который может содержать в себе свёртку адресов как прозрачного пула, так и двух актуальных экранированных пулов Sapling и Orchard в различных сочетаниях — об этом в конце статьи).

Примечание RuZcash: Насколько мне известно из этой статьи, все последующие обновления сети будут происходить поверх пула Orchard и не потребуют создания новых экранированных пулов. Многообразие пулов затрудняет разработку протокола. И это неудобно не только разработчикам, но и, разумеется, пользователям. Продолжительное время ведутся дебаты по поводу пула Sprout. Дело в том, что в нём по-прежнему находятся более 26 тысяч ZEC. Никто ничего не знает о владельцах этих монет. И пока что принято решение не исключать поддержку данного пула из протокола, чтобы у первых пользователей Zcash ещё некоторое время была возможность вывести свои средства в актуальный пул. О прекращении поддержки пула Sapling речи не было, потому что пул Orchard ещё слишком молод и пока нет достаточной инфраструктуры для его полноценного использования. В целом я склоняюсь к тому, что данные неудобства — это издержки переходных периодов. Не стоит забывать, что протокол Zcash сегодня всё ещё находится в стадии строительства и постоянного улучшения. Тем не менее, основной технологией конфиденциальности в блокчейнах уже сегодня можно пользоваться в полной мере.

Типы существующих транзакций

Когда вы совершаете транзакцию, вы изымаете монеты из своего кошелька и отправляете их одному или нескольким получателям. При этом ваши монеты могут быть либо прозрачными, либо экранированными (в пулах Sapling или Orchard) и потом они становятся прозрачными или экранированными по адресам их назначения.

Как мы ранее определились, если транзакция берёт монеты с прозрачного адреса и отправляет их также на прозрачный адрес, то это t2t-транзакция. Аналогично, если транзакция берёт монеты с защищенного адреса и отправляет их на защищенный адрес, то такая транзакция называется z2z.

Примечание:

Zcash позволяет совершать транзакции между T-адресами и Z-адресами и поэтому всего у пользователя существует набор из 4-х видов возможных вариантов транзакций:

Публичные транзакции: T-адрес -> T-адрес (t2t-транзакции)
Транзакции экранирования: T-адрес -> Z-адрес (t2z-транзакции)
Транзакции деэкранирования: Z-адрес -> T-адрес (z2t-транзакции)
Защищённые транзакции: Z-адрес -> Z-адрес (z2z-транзакции)

Не имеет значения, является ли адрес получателя прозрачным или нет, экранированный адрес отправителя в любом случае будет зашифрован и не доступен для просмотра. В обозревателе блокчейна будет доступна только информация о сумме и адресе получателя. Поэтому это полностью безопасный способ для отправителя, позволяющий ему сохранить свою конфиденциальность.

Части транзакции

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

Не вдаваясь в детали, давайте опишем элементы транзакции.

Транзакция имеет:

Каждый раздел имеет примерно одинаковую структуру. Он имеет набор входных данных, которые указывают, откуда активы исходят, и набор выходных данных, которые указывают, куда активы поступают.

В прозрачном разделе все данные раскрываются незашифрованным текстом и именно отсюда обозреватели блокчейнов получают информацию об адресах и сумме.

В разделах «Sapling» и «Orchard» информация зашифрована и может быть расшифрована только тем, у кого есть ключ просмотра, то есть кошельком получателя. Специальная криптографическая печать-метка, называемая Proof — доказательством с нулевым разглашением, гарантирует проверяющим узлам сети, что зашифрованные данные действительны, не раскрывая их содержимого.

Однако разделы Sapling и Orchard способны показывать чистое изменение средств, произошедшее в результате транзакции из одного экранированного пула в другой. Эти функции протокола называются valueBalanceSapling и valueBalanceOrchard.

valueBalanceSapling — это чистая стоимость всех монет Sapling за вычетом израсходованных монет Sapling в текущей транзакции. А valueBalanceOrchard — это аналогичное значение, но для пула Orchard.

YWallet рассчитывает и отображает суммарные изменения всех входов и выходов в виде итогового результата баласа

valueBalanceSapling и valueBalanceOrchard называют “турникетами”. Благодаря им мы можем быть уверенны в том, что фактическое общее количество монет ZEC соответствует расчётному. Подробнее о турникетах здесь.

Конфиденциальность транзакций в теории

Исходя из предыдущего раздела не трудно догадаться, что при переходе монет из одного экранированного пула в другой счётчики функций valueBalanceSapling и  valueBalanceOrchard изменяются. А это значит, что такая z2z-транзакция, хоть и не раскрывает отправителя и получателя, но всё-таки даёт представление об отправленной сумме для проверяющих узлов (Примечание: однако обозреватели блокчейнов по прежнему ничего не покажут о таких транзакциях и она будет выглядеть как обычная защищённая транзакция). Таким образом идеальная конфиденциальная транзакция с максимальным уровнем защиты не должна содержать никаких прозрачных входов или выходов и иметь неизменямое значение valueBalanceSapling и valueBalanceOrchard.

Другими словами необходимо:

  • избегать использования прозрачных входов и выходов (t-адресов);
  • использовать защищенные активы для перемещения в пуле одного типа.

Это легче сказать, чем сделать на практике. Многие факторы влияют на источник средств отправителя и получателей ваших транзакций. Если вы получаете средства от кого-то, кто использует только прозрачный кошелек, то скорее всего он не сможет отправить их на ваш защищенный адрес из-за используемого им кошелька (без поддержки экранированных транзакций). Например, практически ни одна централизованная биржа сегодня не позволяет отправлять ZEC на экранированные адреса и сами они не используют такой тип адреса. И вам потребуется самостоятельно экранировать монеты в своём кошельке после получения их от биржи на прозрачный адрес. Однако если вы сами используете кошелёк с поддержкой экранированных транзакций, то при отправке монет с экранированного адреса на прозрачный адрес сервиса, биржа зачислит активы на баланс (Примечание: проверено многократно на различных биржах), но при этом сотрудники биржи и никто другой, кроме вас не будут знать адрес отправителя.

Уровни конфиденциальности при управлении активами на практике

Давайте посмотрим, как это работает на конкретном примере с помощью кошелька YWallet.

Например, кто-то только что отправил вам 100 ZEC через свой прозрачный кошелек, и теперь у вас есть 100 ZEC на вашем прозрачном адресе.

Далее вы захотели экранировать некоторые из этих средств, чтобы часть монет больше не была видна в блокчейне. Допустим 90 ZEC:

По умолчанию, Ywallet предпочтёт экранировать активы в равной степени как в Sapling-пул, так и Orchard.

Это делается для того, чтобы в дальнейшем вы могли совершать строго конфиденциальные транзакции как с получателями адресов Sapling, так и с получателями адресов Orchard.

Если бы он отправлял все активы на ваш адрес Orchard, то потом вы бы не смогли произвести оплату на адрес Sapling, не пересекая турникет от Orchard к Sapling.

Аналогично, если бы он отправлял все монеты на ваш адрес Sapling, то потом вы бы не смогли произвести оплату на адрес Orchard, не пересекая турникет от Sapling до Orchard.

Предпочтительное универсальное распределение в YWallet при автоматическом экранировании — 50% монет попадают в Sapling-пул и 50% монет попадают в Orchard-пул.

Примечание: решение, компенсирующее издержки переходных периодов.

Итак, экранирование активов произведено. Но следует отметить, что данная транзакция имеет ОЧЕНЬ НИЗКИЙ УРОВЕНЬ КОНФИДЕНЦИАЛЬНОСТИ, поскольку она имеет прозрачные входы и выходы (10 ZEC вернулись на прозрачный адрес).

Транзакции с С ОЧЕНЬ НИЗКИМ УРОВНЕМ КОНФИДЕНЦИАЛЬНОСТИ имеют как прозрачные входы, так и прозрачные выходы. Транзакции с НИЗКИМ УРОВНЕМ КОНФИДЕНЦИАЛЬНОСТИ имеют прозрачные выходные данные, но не имеют прозрачные входные данные (транзакции деэкранирования).

После транзакции экранирования у нас теперь есть два источника экранирования: один Sapling (белого цвета) и один Orchard (жёлтого цвета). Каждый из них по 45 ZEC. (Примечание: вклада «Notes» появляется в продвинутом виде кошелька и включается в меню «Settings -> Advanced Mode«).

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

Транзакции С ВЫСОКИМ УРОВНЕМ КОНФИДЕНЦИАЛЬНОСТИ не имеют прозрачных адресов (входов и выходов) и не переходят через экранированные турникеты.

В случае если мы отправим более, чем 45 ZEC, например 50 ZEC, то кошелёк будет использовать монеты из Orchard-пула, соответственно сумма монет с превышением в 5 ZEC перейдут в пул Sapling.

Выявленная сумма в 5 ZEC — это превышение, которое не может быть покрыто активами кошелька в пуле Sapling. И хотя публичная часть блокчейна не будет видеть общую сумму, а турникет посчитает только 5 ZEC, тем не менее данная транзакция будет менее конфиденциальной.

Транзакции со СРЕДНИМ УРОВНЕМ КОНФИДЕНЦИАЛЬНОСТИ не имеют прозрачных элементов, но помимо комиссии частично раскрывают сумму. Возможно это не так критично для пользователей, но следует просто принимать это во внимание.

Унифицированные адреса выручают

С UA (унифицированными адресами), то есть адресами, которые включают несколько типов адресов, получатель показывает свою способность получать средства сразу в нескольких пулах.

Допустим, нам нужно заплатить ту же сумму, что и раньше (50 ZEC), но нам дали UA-адрес, в котором одновременно есть «приёмники» Sapling и Orchard.

Теперь Ywallet может автоматически разделить платёж между Sapling и Orchard и использовать оба хранилища, не проводя монеты через турникеты.

Более того, кошелёк сам автоматически сбалансировал пулы отправителя, поскольку после транзакции в обоих защищенных пулах остаётся одинаковая сумма. То есть кошелёк отправителя сохраняет оптимальный защищённый потенциал баланса расходов.

Мультиплатёж

Даже при более сложных транзакциях, в которых участвуют несколько получателей и несколько типов адресов, Ywallet всё равно может рассчитать оптимальный план исполнения транзакции для максимального сохранения вашей конфиденциальности.

Например, давайте рассмотрим случай транзакции сразу с шестью получателями, которые имеют:

  1. адрес Sapling
  2. унифицированный адрес, включающий в себя пул Orchard
  3. унифицированный адрес, включающий в себя прозрачный и пул Sapling
  4. унифицированный адрес, включающий в себя прозрачный и пул Orchard
  5. унифицированный адрес, включающий в себя два экранированных пула Sapling и Orchard
  6. унифицированный адрес, включающий в себя прозрачный и два экранированных пула Sapling и Orchard

В пример включены все типы адресов, кроме прозрачных t-адресов, которые бы нарушили нашу конфиденциальность в любом случае.

6 типов перечисленных адресов

Итак, Ywallet предлагает следующую комбинацию (тразакционный план) в данной платёжной операции:

Отмечу, что когда перед Ywallet стоит выбор использовать прозрачный или экранированный пул, он всегда выбирает экранированный: поэтому получатели №3 и №4 полностью защищены и данная операция имеет максимальный уровень конфиденциальности.

Когда у получателя есть как Sapling, так и Orchard приёмники в адресе (получатели №5 и №6), Ywallet рассчитывает суммы для данной сделки, таким образом, чтобы максимально обеспечить вашу конфиденциальность сохраняя оптимальный защищенный потенциал баланса для будущих расходов. (Примечание: для этого YWallet дополнительно добавляет балансирующую пару внутренних транзакций.)

В приведённом примере транзакция является СТРОГО конфиденциальной, потому что при её исполнении не было переходов ZEC между экранированными пулами Sapling и Orchard.

скачать YWallet

Поддерживаемые операционные системы: Windows, macOS (для Intel и Apple), iOS, Android.

Поддерживаемые криптовалюты: Ycash / Zcash

filecoin Halo NU5 Orchard PoS z2z Zcash zcashd Zcon Zebra ZecWallet ZIP ZKP ZSA Доказательства с нулевым разглашением Дорожная карта Зуко Уилкокс Ключи просмотра Конференции Кошельки Кошельки для Zcash Нода Партнёрства Платформы Разработки Релизы Совместимость биткоин будущее денег будущее криптовалют доверенная установка доверительная настройка интервью конфиденциальность криптовалюта новости Zcash обновление сети объяснения обёрнутые токены платёжное средство транзакции унифицированные адреса церемония запуска экранированные пользовательские активы эмиссия

Все новости про Zcash в Twitter  |  Интересные видео про Zcash на YouTube

Комментировать статью:

Ваш адрес email не будет опубликован. Обязательные поля помечены *