Приватность на Tezos: zk-SNARKS уже есть или нет?

Приватность на Tezos: zk-SNARKS уже есть или нет?

Еще в 2019 году core-разработчики Tezos говорили о включении в протокол zk-SNARKS — решения для полностью анонимных транзакций. Третья сторона не видит адресов отправителя и получателя, а также объема транзакции.

Как работает zk-SNARKS? Зачем нужна приватность транзакций? Как анонимно отправлять tez на Tezos? Мы все объясним.

Как работают zk-SNARKS

zk-SNARKS — сокращение от «Zero-Knowledge Succinct Non-Interactive Argument of Knowledge», простыми словами — доказательство с нулевым разглашением.

Эти доказательства позволяют одной стороне доказать истинность какого-то события другой, не раскрывая информации о самом событии. Например, Алиса может доказать Бобу, что она решила судоку, не показывая самого решения.

В блокчейне Zcash, разработчики которого и реализовали zk-SNARKS, отправитель доказывает следующее:

  • он владеет приватным ключом и контролирует адрес;
  • у него есть токены, которые он может отправить;
  • закрытая транзакция подписана так, что ее может изменить только отправитель.

С этим доказательством валидаторы могут удостовериться, что транзакция, о содержании которой им ничего не известно, валидна, и ее можно включить в блокчейн.

Для работы с zk-SNARKS нужны два ключа: spending для отправки скрытых транзакций и viewing для их просмотра. С помощью viewing-ключа можно, например, показать аудиторам историю операций, не раскрывая ее другим пользователям.

Модель транзакций Zcash повторяет Bitcoin. Токены существуют в виде обязательств (commitments), в принципе похожих на неиспользованные выходы транзакций (UTXO) в Bitcoin. Когда пользователь отправляет такое обязательство другому адресу, он сразу отправляет всем нодам так называемый обнулитель (nulifier), который делает отправленное обязательство использованным.

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

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

Зачем нужна приватность транзакций

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

Также не всем пользователям нравится, что история их операций в блокчейне открыта. Например, любой человек может узнать сколько заработал NFT-художник или же следить за операциями китов, как это делает @whale_alert.

Кроме того, приватность могла бы пригодиться и для других задач, например для анонимных голосований в DAO, инвестирования в пулы ликвидности или покупки NFT.

Есть ли приватные транзакции в Tezos

Да, есть, хоть и называются не zk-SNARKS, а Sapling. Sapling — обновление протокола Zcash с улучшенной версией zk-SNARKS: более быстрой и с новыми типами скрытых адресов. Однако под Sapling подразумеваются те же самые доказательства с нулевым разглашением.

Команда Nomadic Labs сообщила об интеграции Sapling в протокол Tezos еще в 2019. Созданием обязательств занимаются смарт-контракты, которые ведут баланс обязательств и обнулитилей. Пользователь отправляет tez смарт-контракту, он превращает их в обязательства (скрывает) и возвращает обязательства на отдельный sapling-адрес пользователя. Операции с обязательствами скрытые, и при некоторых мерах предосторожности sapling-адрес нельзя связать с основным адресом пользователя.

На Gitlab Tezos есть небольшая инструкция с тем, как задеплоить sapling-контракт, сгенерировать spending и viewing-ключи, скрыть tez, отправить приватную транзакцию и превратить полученные скрытые токены обратно в tez. Это можно сделать в Tezos Client.

3 ноября этого года команда кошелька AirGap опубликовала пост о том, что пока не будет добавлять поддержку Sapling-транзакций для мейннета из-за обнаруженной уязвимости в протоколе. Но в сети Ghostnet через AirGap уже можно анонимно отправлять tez. Все как и должно быть: создание отдельного sapling-адреса, скрытие и раскрытие tez через смарт-контракт.

Подписывайтесь на социальные сети Tezos Ukraine, чтобы ничего не пропустить:

  1. Telegram-канал
  2. Facebook.
  3. Twitter на русском и украинском языках
  4. Twitter на английском языке
  5. YouTube-канал
  6. Instagram
  7. LinkedIn
  8. hub на ForkLog

следующий

Каких типов проектов еще нет на Tezos? Разбираемся!

Читайте похожие посты

Starlords: новая ступень генеративных NFT из внешних миров

Starlords: новая ступень генеративных NFT из внешних миров

Разработка после акселератора: как податься на грант для запуска проекта

Разработка после акселератора: как податься на грант для запуска проекта

Каких типов проектов еще нет на Tezos? Разбираемся!

Каких типов проектов еще нет на Tezos? Разбираемся!

Читайте блог и не пропускайте новостей о TezosЧитать блог

Сообщество