Understanding Solidity: A Dive into the Language Fueling Ethereum's Smart Contracts