A smart contract is a contract-like arrangement expressed in code, where the behavior of the program enforces the terms of the contract. The term “smart contract” was coined by legal scholar and programmer Nick Szabo in the early 1990s, when he, along with Mark S. Miller and Ian Grigg, explored how smart contracts might affect the future of law given the rise of the Internet and ubiquitous computing.
By 2014, the definition of smart contracts had shifted. When introducing a new blockchain called Ethereum, Vitalik Buterin defined a smart contract as “essentially an automated agent that lives on the Ethereum network, has an Ethereum address and balance, and can send and receive transactions.” Since then, the definition of smart contracts has further expanded to refer to any code that runs on a blockchain. However, for the purposes of clarity this article focuses on the subset of smart contracts which both run on a blockchain and perform contract-like arrangements expressed and enforced in code. A blockchain is a disinterested and decentralized network made up of many different computers. Because these independent computers all over the world are running the code and comparing their answers, trying to bribe or censor the owners of the computers in order to change the reported outcome of the execution is expensive. Therefore, a blockchain validated by many computers provides higher integrity execution compared to any single computer. Yet most blockchain computation is entirely public. Keeping the data private while also providing public proof that the computation was done correctly remains an open problem for blockchains. Read more