Puncte:1

Bazele ZK-SNARK: cunoașterea t(x), ceea ce îl împiedică pe doveditor să creeze h(x) aleatoriu pentru a forja L, R și O

drapel fr
Max

După ce a citit o serie de explicatori ZK-SNARK de la Aici, Aici, și Aici, inca nu inteleg cateva lucruri.

Configurarea algoritmului folosește QAP pentru a calcula polinomul P(x) = L(x) * R(x) - O(x), precum și polinomul divizor țintă t(x), pentru a reprezenta forma generică a calculului țintă . Apoi, pentru a crea o dovadă, doveditorul

  • Calculează P(x) = L(x) * R(x) - O(x) pentru parametrii specifici ai calculului țintă.
  • Calculează h(x) = P(x) / t(x).
  • Calculează h(s), L(s), R(s) și O(s) pentru a le trimite verificatorului. Verificatorul folosește apoi aceste valori pentru a verifica dacă h(s) * t(s) = L(s) * R(s) - O(s), sau dacă t împarte P fără rest.

Dacă demonstratorul știe t(x), ce îl împiedică să aleagă un h(x) aleatoriu, calculează h(x) * t(x) și formează L(x), R(x) și O(x) cu comanda corecta? Va trece verificarea „fără rest”. Va fi în continuare un polinom (combinație liniară de E(s^d)), așa că ar trebui să satisfacă și verificările de schimbare.

Ce îmi lipsește?

Puncte:0
drapel in

Vă rog să-mi permit să recunosc declarațiile corecte ale problemei, în ceea ce privește QAP. Poate omiterea R1CS, ceea ce nu este scopul acestei întrebări.

Te rog tine minte (1) verificarea „eficientă” (succintă) este ținta snark-urilor și (2) există secrete (martor) polinoame „amestecate”. $L(), R(), O(), h()$. Două puncte lipsesc: (1) polinoamele sunt evaluate într-un punct aleatoriu $\tau$ ascuns de prover („deșeurile toxice”) și (2) curbe eliptice și funcționare biliniară (împerechere).

Polinoame evaluate la $\tau$ sunt trimise spre verificare, ca elemente de grup.Ecuația de verificare este echivalentă cu cea menționată în întrebare, până la o eroare de soliditate neglijabilă (probabilitate) evaluată cu lema Schwartz-Zippel.

Max avatar
drapel fr
Max
Îmi pare rău, încă nu îmi răspunde la întrebare. Să presupunem că a avut loc configurarea corectă, polinoamele și punctele țintă ascunse au fost partajate, deșeurile toxice au fost îndepărtate etc. În procesul normal de verificare, probatorul va calcula mai întâi L, O, R din programul țintă cu parametri specifici de intrare/ieșire care vrea să demonstreze, apoi să calculeze h = (L*R-O)/t, să o evalueze și să trimită rezultatele verificatorului. Totuși, ceea ce împiedică un demonstrator să aleagă mai întâi un polinom aleatoriu h'(), apoi să calculeze L', R' și O' astfel încât L'*R'-O'=h'*t și apoi să trimită „falsificat” rezultatul evaluării la un moment dat?
Vadym Fedyukovych avatar
drapel in
Trebuie să începem de la R1CS pentru a vedea cum toate variabilele/firele sunt amestecate în polinoame $L(), R(), O()$. Ar avea sens doar să luăm în considerare problemele și aritmetizarea lor R1CS astfel încât variabilele publice să definească complet instanța. Verificatorul și-ar introduce copia variabilelor/firelor publice în ecuația de verificare. În ceea ce privește comentariul dvs.: probatorul poate alege doar (L, R, O) care ar fi de acord cu variabilele publice. Apoi, prover nu trimite polinomul h(), ci grupează elemente precum $h(\tau) G_1$. Pot să mă refer la Teorema 2, pagina 18, IACR 2016/260 preprint pentru un astfel de „ce previne” general?
Max avatar
drapel fr
Max
Mulțumesc, este de ajutor!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.