377 похожих чатов

Хотел по zkp спросить, мы тут пробовали дать простое объяснение. я

так понимаю, что это подтверждение решения некоторой задачи.

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

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

отличается только тем, что в первом случае он точно знает решение, во втором это можно проверить уже после раскрытия только я так понимаю?

и других областей применения нет я так понимаю?

5 ответов

24 просмотра

>я так понимаю, что это подтверждение решения некоторой задачи. вот мне кажется что нет это другое - это подтверждение применения полинома (который получается из кода) => это именно что выполнение любого кода (состоящее из + - / * ) из которого собираются всякие сложные R1CS конструкции и полиномы https://vitalik.ca/general/2021/01/26/snarks.html Generation: zk-SNARK protocols provide proof that a specified algorithm (or circuit) was run against some data. I want to prove I know public w and private x such that f(x, w) = 1, but I don't want to give you x. I input x and w into f and f spits out 1, while the zk-SNARK part of the protocol will generate a signature that says I **just did all that** with that public input and that output, so I must have a valid private input. Check: The goal of zero-knowledge proofs is for a _verifier_ to be able to convince herself that a _prover_ possesses knowledge of a secret parameter, called a _witness_, satisfying some relation, without revealing the witness to the verifier or anyone else. We can think of this more concretely as having a program, denoted `C`, taking two inputs: `C(x, w). The input `x` is the public input, and `w` is the secret _witness_ input. The output of the program is boolean, i.e. either `true` or `false. The goal then is given a specific public input `x`, prove that the prover knows a secret input `w` such that `C(x,w) == true`.

-Лис Автор вопроса
Ig
>я так понимаю, что это подтверждение решения неко...

Честно говоря, он как-то странно это объясняет, может он именно снарки объясняет, мне недостаточно там инфы. Нашел чёткий критерий purpose: A zero knowledge proving system is a cryptographic tool that allows a prover to demonstrate that: A zero knowledge proving system is a cryptographic tool that allows a prover to demonstrate that: She knows a secret (a secret will be a value, or a few values) She used those secret values inside a defined and known computation She really performed that computation Я бы добавил ещё к тем пунктам, что ZKP это Nothing but a proof, то есть там нет ни малейших данных как я понял. Эти ZKP не могут никак взаимодействовать судя по всему. И тогда не совсем понятно, как они применимы в DEX, там был очень хороший пример про параболу, ордера и т.д. Одно, что приходит на ум, что пользователь просто каким-то образом подтверждает, что у него есть средства на исполнение ордера, хотя даже в этом пункте уже вопросы имеются. Допустим вот zkp-DEX, двое решили чем-то поменяться (оставим детали ордеров), сосредоточимся на транзакции. Получается они заводят assets в смарт контракт обычным путём (для существующих классических блокчейнов), но внутри они каким-то образом обмениваются ZKP, что они отправили эти средства другому человеку (именно внутри контракта) и таким образом там уже свой блокчейн основанный на ZKP. То есть, отправил ты ZKP и средства списались, но тогда надо вести блокчейн ZKP? с расшифровкой какой-то? И для каждого нового нужны предыдущие доказательства, получается блокчейн с ZKP. Последний абзац это чисто размышления какие-то. Немного взрывает мозг эти догадки, хотелось бы понять как оно работает и где его предел) По ордерам: Order Publication: The user publishes the commitment and the associated ZKP to the DEX network. This step allows other users and the DEX to verify the validity of the order without knowing its specific details. Order Matching: When another user intends to trade with the published order, they can match the commitment with their desired order details without revealing the actual values. This matching process occurs based on the ZKP verification. вот опять таки ничего непонятно) есть комитмент -- какой-то хеш ордера есть ZKP, что действительно верно сделано а как матчить через zkp вообще непонятно) у ордера 2 поля, комитмент, грубо говоря хеш и zkp этого недостаточно чтобы произвести что-то в любом случае. // Alice's Order commitmentAlice = computeCommitment(orderDetailsAlice) zkpAlice = generateZKP(orderDetailsAlice) // Bob's Desired Order desiredOrderDetailsBob = { asset: "ETH", price: 2000, quantity: 5 } // Order Matching Process for each order in ordersOnDEX: // Commitment Matching if commitmentMatches(order.commitment, desiredOrderDetailsBob): // ZKP Verification if verifyZKP(order.zkp, order.commitment): executeTrade(order, desiredOrderDetailsBob) break commitmentMatches -- для меня загадка, хотя ладно, может имеется ввиду, что они полностью совпадают, но как быть с рыночными ордерами, хотя мб они каждый так перебирают. получается такой ордер можно и сбрутить, смысл тогда их шифровать.

 Лис
Честно говоря, он как-то странно это объясняет, мо...

>She knows a secret (a secret will be a value, or a few values) She used those secret values inside a defined and known computation She really performed that computation да я это и писал выше когда на пальцах рассказывал zk) https://t.me/ru_cryptography/29642 >И тогда не совсем понятно, как они применимы в DEX, там был очень хороший пример про параболу, ордера и т.д. я весь ваш код не читал мой пример: юзер доказывает что вызвал функцию iHaveMoney(secretAmount)=true и получил true, подтвержденную zk код функции известен - но инпут секретный надо забыть про математику и думать чисто кодом - zk это доказательство выполнения кода (!) на неизвестном инпуте (!) и получении известного результата который вам покажут + пруф ну вот я могу вам доказать что мне 40 - не показывая паспорт - запустив ваш скрипт - на данных моего паспорта - и получить true - и вам придется поверить >Допустим вот zkp-DEX, двое решили чем-то поменяться (оставим детали ордеров), сосредоточимся на транзакции. Получается они заводят assets в смарт контракт обычным путём (для существующих классических блокчейнов), но внутри они каким-то образом обмениваются ZKP, что они отправили эти средства другому человеку (именно внутри контракта) и таким образом там уже свой блокчейн основанный на ZKP. То есть, отправил ты ZKP и средства списались, но тогда надо вести блокчейн ZKP? с расшифровкой какой-то? И для каждого нового нужны предыдущие доказательства, получается блокчейн с ZKP. нет нет кажется вас унесло в крипто-панк мир в реальности ZKP для DEX используют для снижения комиссий выполняют переводы не на ethereum где atomic swap 2-40$ а на отдельном rollup chain, а в ethereum шлют только zk - proof - ы в контракт пример 1inch - я смог объяснить? но уверен есть и более е___тые примеры тк щаз zk суют везде например polygon запилил zkEVM который в теории - целая ethereum virutal machine которая полностью на все выполнение байткода генерит пруфы - их можно послать в mainnet - и решить blockchain trilemma виталика

-Лис Автор вопроса
Ig
>She knows a secret (a secret will be a value, or ...

а вот хочется более глубокого/низкоуровневого понимания за счёт чего это достигается. и вот сам термин computation, это +-*/? фактически это любой код и вот хотелось бы на примере какого-то квадратичного уравнения это показаться, например: x^2 -25 = 0 (лучше конечно взять что-то типа x^2 + 4x - 2 = 0, что-то более неочевидное) решения +5 и -5 P их знает V их не знает каким образом это будет происходить? P берёт и делает комитмент, шлёт хеш от +5 или -5 V получает этот хеш пока это гарантирует, что он не может подменить данные, которые отправил, но это ещё не значит, что хеш верный. Далее генерируется ZKP. И тут понимания недостаточно, причём я читал и примерно понимаю на каких свойствах оно работает. Но опять же пруф чего? что хеш сгенерирован корректно от некоторых данных или от того что я знаю решение уравнения? или может того и другого? и главное как оно делается, вот очень хотелось бы понять именно на простом примере, чтобы оно не выглядело магией на более сложных вещах.

Похожие вопросы

Обсуждают сегодня

Карта сайта