Smart Contracts With Solidity: Ethereum and NFTs