What is a smart contract and what are its features?