# Monero USES Zero-Knowledge Proofs
Zero-knowledge proof means proving without giving any knowledge. F
or example, suppose a secret society asks several questions about
some insider informations to enter their HQ. In this case, you can
prove that you are a member without giving any knowledge about you
rself. In real cases, you will use a value that you can compute on
ly when you have required informations.
Monero uses ring signatures and RingCT. Ring signature means you c
an sign with a group of public keys, which contains yours. Anyone
beside you can't know who in the group signed. RingCT means a conf
idential transaction with a ring signature.
In the context of cryptocurrency, a sign means a spend. So it mean
s your spending is untraceable. To make a ring signature you must
prove that your key is in the group without giving your key itself
. This is a zero-knowledge proof.
Confidential transaction is a zero-knowledge proof too. A Petersen
commitment is a homomorphism with a secret blinding factor. Since
C(x,a)+C(y,b)=C(x+y,a+b), if we choose blinding factors x,y random
ly, we can hide transaction amounts a,b. And we can add amounts li
ke real number additions. This is a zero-knowledge proof since we
can prove a + b = (a+b) without giving a,b themselves.
Monero also uses Bulletproof+ which guarantees transaction amounts
are not overflowed without giving any transaction amount.
What makes Zcash different from monero is that zk-SNARK and zk-STA
RK directly manipulates the Merkle trees. Why? In blockchains, a M
erkle tree contains every transaction of a block. Since not every
transaction is hidden in Zcash, they should deal with each transac
tion seperately. So they have to deal with the Merkle trees direct
ly.