Схемы

За интерфейсом Tornado.cash стоит ряд Протокол Circom с нулевым разглашением схемы, которые обеспечивают фундаментальные гарантии конфиденциальности, которыми пользуются пользователи Tornado.cash. Эти схемы реализуютчто интерфейс смарт-контрактов Tornado.cash предназначен для подтверждения утверждений о депозите пользователя, например, о том, что он действителен, что он еще не был отозван, а в контексте анонимного майнинга - количество блоков, существующих между депозитом заметки. транзакция и ее вывод.

Как работают схемы ZK

SNARK и GROTH16

Прежде чем пытаться понять, как Tornado.cash работает под капотом, вам сначала необходимо понять схемы с нулевым разглашением, как они устроены и как доказательства генерируются на стороне клиента, а затем проверяются в цепочке. Хотя есть несколько разных типов Из систем ZK Tornado.cash использует вариант, известный как «краткие неинтерактивные аргументы знаний» (SNARK), в частности вариант под названием GROTH16.

Цирком и снаркджс

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

Circom проще всего рассматривать как компилятор языка схем, который действует очень похоже на язык описания оборудования который инженеры-электрики использовали бы для описания электрической цепи. За исключением того, что вместо электрической цепи мы описываем арифметическую схему , которая содержит компоненты и способ их соединения друг с другом.Когда вы компилируете схему Circom, на выходе получается Система ограничений R1CS Wasm -свидетель иисполняемый файл, который будет использоваться для создания.R1CSЧтобы понять R1CS (систему ограничений ранга 1), конечно, нужно больше математики. А где есть важная криптосистемная математика, есть сообщение от Виталик.

R1CS — это последовательность групп из трех векторов (a, b, c)(a,b,c), а решением R1CS является вектор ss, где ss должен удовлетворять уравнениям . как . б-с. c = 0s.a∗sb−sc=0, где... представляет собой скалярное произведение - проще говоря, если мы «соединим» aaandss, умножив два значения в одних и тех же позициях, а затем возьмем сумму этих произведений, затем выполните те же самые tobbandss и thenccandss, затем третий результат будет равен произведению первых двух результатов. Следующий шаг — взять этот R1CS и преобразовать его в форму QAP, которая реализует ту же самую логику, за исключением использования полиномов вместо скалярных произведений... вместо проверки ограничений в R1CS по отдельности мы теперь можем проверять все ограничения одновременно, выполняя проверку скалярного произведения полиномов. Если мы попытаемся фальсифицировать любую из переменных в решении R1CS, которое мы получаем, это Решение QAP из — скажем, установим для последнего значение 31 вместо 30, тогда мы получим полином att, который не проходит одну из проверок.

Короче говоря, R1CS — это набор полиномиальных ограничений, которым должно удовлетворять любое доказательство, сгенерированное схемой. Эти ограничения создано Circom основанный на взаимосвязи между различными «сигналами» и операциями в вашей схеме. Свидетели Теперь, в зависимости от того, для чего вы используете Tornado.cash, вам могут не понадобиться свидетели. Однако не волнуйтесь: если все работает правильно, все свидетели вашего взаимодействия с Tornado.cash будут агрессивно сжаты, а их тела удалены по вашему усмотрению.

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

ДоказательствоКогда вы думаете о «доказательстве», вы, вероятно, представляете, что это неопровержимая гарантия того, что что-то истинно. Однако в контексте SNARK «доказательство» на самом деле представляет собой аргумент в пользу того, что что-то почти наверняка верно. Если бы мы попытались передать решение каждому отдельному полиномиальному ограничению, наложенному схемой, мы бы получили доказательства, которые были бы на порядки больше, чем если бы мы просто показали, что между значениями промежуточных состояний внутри схемы сохраняются определенные виды отношений. схема.Вполне возможно, что для любой данной схемы кто-то, обладающий достаточной вычислительной мощностью, сможет сгенерировать доказательство, которое некорректно удовлетворяет ограничениям схемы, но это будет примерно эквивалентно по сложности факторизация больших простых чисел.

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

Схемы

Имея хорошее представление о схемах проверки ZK, давайте углубимся в то, как Tornado.cash использует некоторые относительно простые схемы, позволяющие вам конфиденциально и без разрешения скрывать взаимосвязь между вашими транзакциями пополнения и вывода средств в общедоступной сети блокчейн, а затем позже докажите информацию о взаимосвязи между вашим депозитом и снятием средств (например, как долго вы ждали перед снятием средств). ​Tornado.cash лучше всего понимать как наличие двух отдельных основных компонентов.

Схема основного депозита

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

Анонимный майнинг

Схемы анонимного майнинга составляют основу программы Anonymity Mining, которая стимулирует пользователей оставлять свои депозиты в контракте на более длительные периоды времени, чтобы гарантировать, что пулы депозитов Tornado.cash поддерживают большое количество активных депозитов (таким образом увеличивая k-анонимность для других пользователей).

Last updated