# Gnark Code Pointers [Gnark Verifier](https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L43) - This `for` will have 1 iteration because we will have `vk.PublicAndCommitmentCommitted = [[]]`, i.e. it's an array of length 1 (b/c we allow only 1 commitment) containing an empty array (b/c we don't allow commitments to public witness values). https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L82 - This grabs the Pedersen commitment from the proof https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L83 - This one's empty (b/c no commitments to public witness values) https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L85 - This does the hashing (there are many options for hash to field function, the one we use is described in specs) https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L90 - The result is appended as a new public input https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L98 - This folding is a no-op because we only allow 1 Pedersen commitment https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L102 - So this is where Pedersen POK is checked https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L105 - Here the commitment is added to public input term https://github.com/Consensys/gnark/blob/d84f52a16ff161f93654698d4144f7f03ed13fe0/backend/groth16/bn254/verify.go#L118