Though this overview is largely about Ethereum, practically all the concepts apply to smart-contract enabled blockchains!
Smart contracts are the primary reason that the field of blockchain development exists.
Ethereum’s core innovation in 2013 was to allow developers to write small chunks of code, known as smart contracts, that could be deployed to the Ethereum network to run independently of their creators. In Ethereum, smart contracts are written in Solidity, a high-level programming language designed to run on the Ethereum Virtual Machine.
A smart contract is a self-contained program that defines a public agreement, or “contract” that automatically executes the terms of the agreement when called by a user on the blockchain.
Unlike traditional programming languages, smart contracts have the following properties:
Transparency: Smart contracts are published to the blockchain, and can be read and written by anyone who has access to the blockchain.
Simplicity: Because smart contracts are expensive to deploy onto the blockchain and contain sensitive logic dictating the flow of financial transactions, they tend to be much smaller and simpler than most codebases.
Immutability: Once a smart contract has been deployed, it (typically) can’t be modified and is guaranteed to function identically no matter when its called! This allows smart contracts to operate as reliable, trusted third parties - because no individual controls the smart contract, it can act as a financial intermediary, a trustworthy automated market maker, or much more by guaranteeing impartiality.
Once deployed, these smart contracts behave as independent actors that are fully transparent but can contain complex logic. Therefore, instead of only human users owning accounts on Ethereum, there are two types of accounts:
Externally Owned Accounts (EOAs) managed by a human user.
Contract Accounts which are managed by their underlying smart contract code.