A smart contract is a protocol that enforces the performance of a contract with adding the terms of the agreement into the code. Smart contracts are a great way to exclude any third party from the transaction and make transaction prices lower, as they need no validation. Smart contracts are implemented in a lot of cryptocurrencies to control the transfers of digital currency, establish a governance and a lot of other things. But smart contracts have a wider range of possible implementations. Smart contracts may be used in voting, management, machine-to-machine interactions in the internet-of-things, real estate and in the building of personal data storage with specific access policies, e.g., medical databases. Still, smart contracts are not perfect. They don’t exclude the possibility of bugs or fraud and have no way of changing post-factum, which may be necessary in some cases.