18 ноября 2022

Приватность на 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

Изначально мы опубликовали этот материал в блоге Tezos Ukraine.

Обсудить в Discord!