https://www.theraven.tech/blog/create-a-smart-contract