Introduction to Zero- Knowledge Proofs & ZoKrates for Smart Contracts