diff --git a/docs/projects/zksnark.md b/docs/projects/zksnark.md index 97d9fe6..ffd4440 100644 --- a/docs/projects/zksnark.md +++ b/docs/projects/zksnark.md @@ -5,3 +5,66 @@ tags: --- # Проект по zkSNARK + +## Тестовое задание + +### Задача 1 + +Алиса и Боб были друзьями с детства, но обстоятельства разлучили их. Однако они +договорились, что если судьба сведёт их снова, Алиса сможет узнать Боба по +коэффициентам многочлена $P(x) : \mathbb{Z}_p \to \mathbb{Z}_p$ достаточно +большой степени $N$, о которых они договорились заранее. + +Шли года, и вот Алиса встретила красивого статного мужчину, отдалённо +напоминающего её друга из детства (назовём этого мужчину $\textrm{Боб}'$). Она +хочет убедиться, что это действительно Боб; помогите ей! + +Предложите вероятностный алгоритм со следующими свойствами: + +* Алгоритм задаёт протокол одностороннего общения между Алисой и + $\textrm{Бобом}'$, в ходе которого Алиса может задавать вопросы + $\textrm{Бобу}'$, а он --- отвечать на них одним элементом $\mathbb{Z}_p$; +* Результатом работы алгоритма является ответ <<да, это Боб>> или + <<нет, это не Боб>>; +* Если это действительно Боб, алгоритм не ошибается; +* Если это не Боб, и Алиса задала $k$ вопросов, то вероятность ошибки составляет + $O(1/p^k)$; +* Подслушивающий их Майк не сможет узнать ни одного коэффициента заветного + многочлена ни при каких обстоятельствах, если $k << N$ (кроме как угадать). + +### Задача 2 + +Будем говорить, что система из $m$ уравнений от $n+k+1$ переменной + +\[\left\{\begin{array}{l} + p_1(x_1\ldots x_n, y, z_1\ldots z_k)=0,\\ + \ldots,\\ + p_m(x_1\ldots x_n, y, z_1\ldots z_k)=0. +\end{array}\right.\] + +_описывает_ функцию от $n$ переменных $f : \mathbb{Z}_p^n \to \mathbb{Z}_p$, +если + +* для любых $x_1\ldots x_n$ найдутся такие $z_1\ldots z_k$, что + $(x_1,\ldots,x_n,f(x_1,\ldots,x_n),z_1,\ldots,z_k)$ является решением системы, + и +* любое решение системы имеет вид + $(x_1,\ldots,x_n,f(x_1,\ldots,x_n), z_1,\ldots,z_k)$ для некоторых $\vec{x}$ и + $\vec{z}$. + +В данной задаче нас интересуют уравнения вида +\[axy + bx + cy + dz + e = 0,\] +Где $a$, $b$, $c$, $d$, $e$ --- произвольные коэффициенты из $\mathbb{Z}_p$, а +$x$, $y$, $z$ --- произвольные переменные из +$\{x_1,\ldots,x_n,y,z_1,\ldots,z_k\}$. + +1. Какими системами можно описать функции $f(x_1, x_2) = x_1 + x_2$ и + $f(x_1, x_2) = x_1 x_2$? Постарайтесь обойтись как можно меньшим числом + вспомогательных переменных и уравнений в системе. +2. Описывает ли система $x y = 1$ функцию + $f(x) = \verb|if|\;x=0\;\verb|then|\;0\;\verb|else|\;x^{-1}$? Почему нет? + Постарайтесь придумать систему, которая опишет эту функцию. +3. Какой системой можно описать функцию + $f(x_1, x_2) = \verb|if|\;x_1=x_2\;\verb|then|\;1\;\verb|else|\;0$? + Постарайтесь обойтись как можно меньшим числом вспомогательных переменных и + уравнений в системе.