How to Write a Smart Contract