Skip to content

Commit

Permalink
+ zkSNARK test task
Browse files Browse the repository at this point in the history
  • Loading branch information
TurtlePU committed Oct 6, 2024
1 parent 2e4c957 commit c0a6ce4
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions docs/projects/zksnark.md
Original file line number Diff line number Diff line change
Expand Up @@ -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$?
Постарайтесь обойтись как можно меньшим числом вспомогательных переменных и
уравнений в системе.

0 comments on commit c0a6ce4

Please sign in to comment.