2
$\begingroup$

Is there a zero-knowledge proof that proves that two Pedersen commitments commit the same value?

$\endgroup$

1 Answer 1

2
$\begingroup$

An EC Pedersen commitment is of the form $C=(bG+vH)$, where $v$ is the scalar value being committed to, $b$ is the scalar blinding factor, and $G$ and $H$ are well-known generator points on the curve. They must be chosen such that the discrete log of $H$ w.r.t. $G$ is unknowable.

Let there be two commitments, $C_1$ and $C_2$ to the same value $v$ but with different blinding factors $b_1$ and $b_2$.

To prove that $C_1$ is a commitment to the same value as $C_2$, provide a signature (such as a Schnorr signature) for the public key $C_1-C_2$ on the generator point $G$.

This works because if the values are the same, they cancel out and $C_1-C_2=(b_1-b_2)G$. This means a signature can be provided, using the private key $b_1-b_2$.

If the values did not cancel each other out, then the private key required to generate the signature would be $b1-b2+v_1(G/H)-v_2(G/H)$. It is impossible to know this private key, because the EC discrete log assumption is that $G/H$ is unknowable.

Therefore, being able to provide a signature on the generator point $G$ proves the values must be the same.

The technique I've described is used as part of cryptocurrencies that use Greg Maxwell's confidential transactions protocol.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.