https://medium.com/better-programming/build-a-verifiably-random-lottery-smart-contract-on-ethereum-c1daacc1ca4e