Ei bine, o abordare ar fi ca ambele părți să genereze și să publice angajamente și să publice împreună o dovadă de zero cunoștințe că ambele angajamente au aceeași valoare.
Iată o abordare pentru a face asta: ambele $A$ și $B$ generează și publică angajamente Pedersen; de exemplu, $A$ selectează o valoare aleatorie $r$ și publică $C_A = g^k h^r$, in timp ce $B$ selectează o valoare aleatorie $s$ și publică $C_B = g^k h^s$ (unde acest lucru se face într-un grup în care jurnalele discrete sunt dure și nimeni nu știe jurnalul discret al $h$ cu privire la $g$).
Dovada zero-cunoștințe că ei se angajează la aceeași valoare este o dovadă a cunoașterii unei valori $v$ astfel încât $C_A C_B^{-1} = h^v$ (care, pentru angajamente oneste, este $v = r-s$); dacă o parte se angajează la o altă valoare, nimeni nu va ști o asemenea valoare $v$, și, prin urmare, nimeni (nici măcar $A, B$ în comun) vor putea publica o astfel de dovadă. Rețineți că $C_A C_B^{-1}$ poate fi calculat de oricine are acces la cele două angajamente.
Ar părea a fi destul de simplu ca cele două părți să lucreze împreună pentru a genera o astfel de dovadă Schnorr:
$A$ selectează o valoare aleatorie $a$ si trimite $h^a$ la $B$; $B$ selectează o valoare aleatorie $b$ si trimite $h^b$ la $A$.
Ambii calculează valoarea comună $c = \text{Hash}(h^a h^b)$
$A$ calculează $x = a + c r$, și publică $x, h^a$. $B$ calculează $y = b - c s$, și publică $y, h^b$.
Perechea $h^ah^b, x+y$ ar fi o dovadă Schnorr validă; verificatorul ar verifica dacă $h^{x+y} = (h^ah^b) (C_A C_B^{-1})^{\text{Hash}(h^ah^b)}$
Acum:
Eu cred că accesul la „semi-dovezi” $x, h^a$ și $y, h^b$ nu oferă nicio perspectivă asupra niciunui angajament.
Acest protocol este protejat de un singur actor rău intenționat; daca (spune) $A$ a fost cinstit, atunci dacă dovada zero-cunoștințe verifică, $B$ trebuie să se fi angajat la aceeași valoare. De fapt, chiar dacă ambele părți sunt rău intenționate, totuși nu se pot angaja individual la valori diferite.