Who needs them?
Companies and individuals wishing to implement or transfer a part of their business logic onto a blockchain. Smart contracts are a great way to implement rules, conditions, triggers and limits related to a certain action, transaction, generation of an event, etc. Smart contracts can also establish a new cryptocurrency, store data, or communicate with one another. A single or hierarchical set of smart contracts can integrate a variety of business cases and processes.
What they do?
Smart contracts are persistent scripts written in the Solidity programming language and deployed on a blockchain. There is not much room for correcting them once the deployment takes place. For this reason, it is important for the developer to understand the client's requirements to be able to properly implement all the desired features.
After the initial development, all the contracts are tested on testing blockchains for flaws and irregular behavior. Once tested, the smart contracts are deployed on the “mainchain”. Afterwards, the complete documentation is handed to the client together with the source code.