«Утверждение о том, что вам безразлично право на неприкосновенность частной жизни, потому что вам нечего скрывать, ничем не отличается от утверждения, что вам безразлична свобода слова, потому что вам нечего сказать», — Эдвард Сноуден.

Среди пользователей криптовалют существует мнение об анонимности производимых в блокчейне транзакциях. Но порой эта анонимность мнимая — достаточно единожды связать адрес кошелька с его владельцем и по цепочке транзакций отследить действия «подозреваемого».

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

Цепочку переводов можно скрыть с помощью миксеров для Bitcoin — это BitMixer и CoinJoin. Также анонимность дает кольцевая подпись транзакции — она используется в Monero. Но есть и абсолютно иное представление о защите данных и конфиденциальности информации — Zero Knowledge Proof или доказательства нулевого знания.

Технология zk-SNARK

Когда люди в криптовалютном пространстве говорят «доказательства нулевого знания», они обычно ссылаются на определенный тип доказательства — zk-SNARKs. С его помощью можно полностью скрыть все данные: с какого адреса ушел платеж, куда он пришел и сколько денег было переведено. Также он позволяет доказать, что транзакция действительно прошла и на счете получателя находится верная сумма.

Как это работает?

Математику, лежащую в основе zk-SNARKs, трудно понять. В том, как работает этот протокол реально разбираются всего пара сотен человек, но попробуем привести аналогии для понимания работы этой системы.

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

Где это применяется?

Zero Knowledge Proof сейчас реализован в криптовалюте Zcash и его форках (Zclassic, ZenCash). Ethereum ввел zk-Snark в развертываемом обновлении Metropolis. Платформа Komodo также использует эту технологию.