Транзакции Zcash t-addr + z-addr

Можно ли «сломать» отслеживаемость блокчейна, отправив ZEC между z-addr и t-addr?

@renlord Вопросы о «криптовалюте или технологии, полученной непосредственно из биткойнов, таких как Namecoin или Litecoin», или о «распределенных криптовалютах, не полученных непосредственно из биткойнов, таких как Ripple, Ethereum или NXT», явно находятся в топе на этом сайте. Источник цитат: bitcoin.stackexchange.com/help/on-topic
Ok. Я отменю свой закрытый голос.

Ответы (1)

tl;dr Вы должны использовать округленные значения ZEC при разблокировке, и даже тогда у вас будет меньше конфиденциальности, чем если бы вы использовали только z-addrs.


Мы отвечаем именно на этот вопрос в этом сообщении в блоге (изображения, которые я воспроизвожу ниже).

Транзакции с использованием t-адресов, унаследованных от Биткойн, очевидно, отслеживаются. Однако свойство нулевого разглашения, связанное с использованием z-адресов, означает, что когда вы отправляете ZEC на z-адрес (создавая «заметку», частный эквивалент TXO), а затем используете эту заметку в последующей транзакции , две транзакции не связаны напрямую в цепочке блоков (то есть вторая транзакция не содержит prevoutполя, ссылающегося на первую, как это произошло бы с t-адресами).

Это означает, что если вы отправите ZEC с t-адреса на z-адрес («экранирующая» транзакция), а затем с z-адреса на другой t-адрес, вы получите цепочку транзакций (b) ниже:

Экранированные адреса могут удалить прозрачные адреса.

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

Теперь предостережение! Z-адрес скрывает все детали (получатели, значения и поля памятки) выходных заметок в экранирующей транзакции и соответствующие свойства входных заметок в неэкранирующей транзакции. Но значения ZEC по-прежнему общедоступны, потому что они видны в прозрачных половинах транзакций! Это означает, что вы можете столкнуться с проблемами при отправке полного баланса t-адреса без изменений :

В некоторых случаях экранированный адрес может не защитить от связывания значений.

Полная стоимость отображается в первой транзакции, а затем появляется вторая транзакция с выходной стоимостью, равной исходной входной стоимости за вычетом двух комиссий за транзакцию. Также доступны временные данные (поскольку транзакции по своей сути упорядочены и имеют временные метки в цепочке блоков), а это означает, что можно статистически связать две транзакции, основываясь только на этих значениях [0].

Решение этой проблемы довольно простое : используйте «округленные» значения при разблокировке (с изменением, возвращающимся к z-адресу). Таким образом, между экранирующей и неэкранирующей транзакциями нет никакой связи стоимости.

РЕДАКТИРОВАТЬ: обратите внимание, что конкретная стратегия округления, которую вы используете, может сама по себе привести к утечке информации! Например, если вы всегда округляете до целых ZEC в меньшую сторону, а кто-то другой всегда округляет до ближайших 10 ZEC, то со временем ваши незащищенные транзакции будут выглядеть заметно иначе, чем их, а тот, кто ищет закономерности в блоке цепочка может начать отделять ваши незащищенные транзакции от остальных. В целом, чем больше и стандартнее используемые вами корзины, тем меньше информации утекает; кроме того, вы хотите, чтобы все остальные использовали те же ведра, что и вы!

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

[0] Это немного сложнее. Экранированная часть неэкранированной транзакции по-прежнему имеет те же две выходные записи, что и любая другая часть экранированной транзакции (они просто содержат фиктивные записи для транзакции z->t), и эти части могут быть заполнены (т. е. с использованием z-адреса для оплачивать как z-адреса, так и t-адреса). Таким образом, хотя сопоставление значений является сильной связью, это не окончательная связь, и фактически может быть намеренно подорвано кошельками, выбирающими vpub_newзначения для своих незащищенных транзакций из набора vpub_oldзначений, которые были замечены в цепочке блоков. Округление значений фактически является механизмом социального консенсуса для достижения этой цели.

Ууууу, добро пожаловать @str4d! :)