Приветствуем! Впервые на сайте Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

Язык

Связанность транзакций

Paige Peterson | Jan 25, 2017

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

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

В этой статье мы расскажем о некоторых разработках Zcash и покажем решения некоторых вопросов сохранения конфиденциальности при использовании скрытых и открытых адресов

Каким образом в Zcash представлена связанность?

Открытые адреса

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

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

Comparing transaction series: three transparent addresses vs a shielded address sandwiched between two transparent addresses

Скрытый адрес может разорвать связь между открытыми адресами [1]

Использование только скрытых адресов пользователями, принимающими платежи, а также вашими друзьями и знакомыми, повышает и вашу собственную конфиденциальность! На картинке выше показано, как скрытый адрес, который использует Боб(b) разрывает связь между Алисой и Кэрол. Чтобы лучше понять схему, сравним 2 примера, отражающих происходящее на картинке: Алиса отправляет 15 ZEC (минус комиссия) на открытый адрес Боба, а Боб с открытого адреса отсылает 10 ZEC Кэрол и Алиса отправляет 15 ZEC (минус комиссия) на скрытый адрес Боба, а Боб со скрытого адреса отсылает 10 ZEC Кэрол.

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

Связь через сумму

Как бы то ни было, метод разрыва связи между Алисой и Кэрол с помощью скрытого адреса Боба не всегда срабатывает на 100%.

Чтобы объяснить, почему так происходит, давайте для начала рассмотрим, какими характеристиками обладают транзакции, задействующие оба типа адресов: когда при использовании открытого адреса скрывается информация о ZEC (t → z), или когда скрытый раскрывает информацию о ZEC (z → t); сумма, отправленная с или полученная на открытый адрес остается видимой для третьих лиц, не смотря на то, что на одном из этапов доступ к этой информации закрывается скрытым адресом. Это можно увидеть в ранее приведенном примере, где Боб использует скрытый адрес, но открытые адреса Алисы и Кэрол все равно делают данные о сумме общедоступными.

A diagram showing the possibile value linkability in a transaction series even when a shielded address is used in between transparent addresses

В некоторых случаях даже при использовании скрытого адреса связь транзакций можно проследить

А теперь давайте представим, что Боб отправляет Кэрол точно такую же сумму, которую получил от Алисы. Выходит, что если исходящая от Алисы сумма X равна входящей сумме Y Кэррол (X равен Y минус две стандартные комиссии за транзакцию), то можно с достаточной долей вероятности предположить связь между этими платежами, потому как суммы переводов, хранящиеся в блокчейне, достаточно уникальны. Вот пример такой транзакции: Алиса посылает 15 ZEC (минус комиссия .0001) на скрытый адрес Боба и Боб с закрытого адреса отправляет 14.9999 ZEC (минус комиссия .0001) на адрес Кэрол.

Далее, подтверждение этой связи можно найти используя временные параметры исходящих Алисы и входящих Кэрол, которые зафиксированы в блокчейне. Например, в описанном выше случае транзакция, где Алиса отправляет ZEC Бобу, числится в блокчейне под номером 50374, а та, где Боб отправляет Кэрол - 50378. Этот номер дает возможность связать данные транзакции, что было бы невозможно сделать, если бы номер второй транзакции был, скажем, 111583.

Чтобы избежать этого, Боб должен понимать, что отправляя на открытый адрес только что полученную также с открытого адреса сумму в полном объеме, он дает возможность установить связь между ними. Для таких случаев возможно, что кошельки Zcash даже обзаведутся функцией распознавания потенциальной угрозы установления связи между предыдущей и последующей транзакциями ZEC. [2]

Уникальные комиссии за транзакции

Другой способ связать платежи касается использования комиссий за проведение транзакции. Для большинства кошельков используется установленная комиссия (.0001 ZEC), которая отходит майнерам. В посте Структура транзакций Zcash упоминалось, что даже при использовании скрытого адреса, комиссия всегда является общедоступной. В то время как при использовании фиксированной комиссии это не раскрывает достаточно информации, транзакции с уникальной комиссией можно вычислить и связать.

Решение простое: использовать фиксированную комиссию!

Чем проще, тем надежней

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

[1]В транзакциях серии b мы используем знак вопроса, чтобы показать, что нам не известна сумма, полученная Бобом на закрытый адрес, хоть мы и примерно предполагаем, что она примерно равна 14.9999 ZEC. Это потому, что есть вероятность, что к этой сумме будет добавлен дополнительный скрытый входящий/исходящий, а это не отображается в блокчейне.
[2]Подобную связь транзакций можно вычислить в случаях, когда пользователи перекидывают деньги между собственными адресами, а не другим пользователям. В представленном примере Алиса и Боб скорее один и тот же человек, который совершает транзакции между своими же скрытыми и открытыми адресами.
[3]В то время как скрытые адреса предполагают высокий уровень конфиденциальности, отличающий Zcash от всех остальных открытых систем на основе блокчейна, открытый адрес упрощает (по крайней мере на данный момент) системные требования, а также у них более привычный функционал, известный по уже существующим криптосистемам.