What are smart contracts?
Smart contracts are pre-programmed, automatic digital agreements. They are self-executing, unalterable, and incorruptible. They don't necessitate any acts or the presence of others.
Two worlds of smart contracts
We can break smart contracts and financial transactions down into two worlds:
In one world, you wish to communicate a sense of worth from one actor (or group of actors) to another (or a group of actors). There must be a representation of that value, as well as the rules and circumstances that govern it, as well as a trigger event. A financial contract is what we call it, and it's best done with a domain-specific language. This world has nothing to do with replacing a big company or this common notion that we might have with dapps.
In another world, you'd like to build programs, possibly even replace a major corporation, or address a smaller problem. A triangle is formed by these applications:
- The client is the portion of the program that runs on your computer.
- A server is a computer that operates on someone else's computer (or multiple servers).
- The smart contract is a piece of code that allows a decentralized system to operate.
- Aiken - for on-chain validator scripts only: a language & toolchain favouring developer experience.
- Marlowe - a domain-specific language, it covers the world of financial contracts.
- opshin - a programming language for generic Smart Contracts based on Python.
- Plutus - a platform to write full applications that interact with the Cardano blockchain.