Încerc să înțeleg dovada Zero cunoștințe și aplicațiile sale, primul meu instinct este un blockchain (voi folosi Bitcoin-like pentru simplitate)
Încerc să-mi înțeleg capul în jurul lui, descriind pașii logici pentru o tranzacție publică blockchain. Tot ce am citit vorbește despre transmiterea valorilor altora prin schimbul de mesaje cu o altă parte (zkp interactiv), dar nu am găsit nimic care să verific dacă valorile sunt valide sau nu într-un spațiu public (zkp non interactiv), pentru a evita dublarea cheltuielilor sau chiar stocarea. datele în siguranță. Intuiția mea este că necesită, de asemenea, evaluări homomorfe asupra valorilor, astfel încât numai receptorul să știe de fapt ce valoare este stocată, permițând și comparații între valorile criptate. Până acum asta am (în pași logici)
A și B sunt perechi de chei fiecare cu următoarele proprietăți;
A(pub): cheie publică
A(priv): cheie privată
A(env): cheie publică (de evaluare).
V este un validator
A vrea să transfere 12 monede către B și are 15 monede în portofel, pe baza ultimei UTxI adunate.
A criptează valorile UTxI și UTxO (12 și 3) ale Tx cu (B)env, așa că acum este H(i) și H(o)
A creează o dovadă pentru fiecare valoare criptată (H) ca PH(i) și PH(o) și trimite tranzacția.
Tx = H, UTxI => H(i), UTxO => H(o), In => A(pub), Out => B(pub), Proof of In => PH(i), Proof of Out = > PH(o),
V vrea să știe dacă A are suficiente monede pentru a trimite Tx-ul către B.
V folosește evaluarea homomorfă pentru a adăuga toate UTxO (H(o)) ale TX și compară cu toate intrările de pe A(pub), care sunt, de asemenea, criptate.
V ar trebui să facă același lucru cu UTxI + UTxO, pentru a verifica dacă sunt egale cu soldul din A(pub)
V verifică dovezile PH(i) și PH(o), dacă sunt valide, procedează la acceptarea Tx.
B primește Tx și ar trebui să poată decripta toate UTxI și UTxO pentru a ști câte monede a primit folosind (B)priv
și B(env) pentru a inversa calculul homomorf.
De asemenea, are dovada fiecăreia dintre ele pentru ca terții să valideze că are exact suma respectivă.
Acest exemplu folosește un sistem Bitcoin, cum ar fi UTx, în care cantitatea de monede din portofel este calculată prin adunarea intrărilor de tranzacții necheltuite la această adresă (îmi pare rău dacă are unele erori în logică), dar ceea ce încerc să înțeleg mai sus este cum ar fi blockchain-ul trebuie să fie actualizat pentru a permite tranzacții complet private și totuși să fie validat de terți.
Este corectă logica descrisă sau îmi scapă ceva?
Multumesc pentru timpul acordat!