In the previous section, it was discussed that users generate claims which involve proof of knowledge of a leaf and path in the tree that leads to a particular node stored in the contract, without revealing the leaf nor the path taken. The type of proof involved here is, as mentioned, a zk-SNArK. That is, it is a succinct, non-interactive argument of knowledge (it is a way of demonstrating that you have a particular piece of knowledge that obeys certain constraints; in this case, you know a leaf and path to get to a particular node in a Merkle tree) that you reveal without revealing any knowledge besides the fact of the truth of the statement (the “ZK-” prefix, meaning “zero knowledge”). Proving the knowledge involves the prover to know a polynomial, which, when applied to a value P (the polynomial has terms aP + bP^2 + cP^3 +...) produces a particular value. However, a precaution must be taken to prevent an attacker from generating just any polynomial that works for this value of P: the actual value of P is unknown to anyone!