Merkle proof verification based on https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol.
function verify(bytes32 proof, bytes32 root, bytes32 leaf) internal pure returns (bool)
Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves and each pair of pre-images are sorted.
proof- Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree
root- Merkle root
leaf- Leaf of Merkle tree