A smart contract is a computer program
or a transaction protocol which is intended to automatically execute,
control or document legally relevant events and actions according to the
terms of a contract or an agreement.
The objectives of smart contracts are the reduction of need in trusted
intermediators, arbitrations and enforcement costs, fraud losses, as
well as the reduction of malicious and accidental exceptions.
Vending machine is mentioned as the oldest piece of technology equivalent to smart contract implementation. 2014's white paper about cryptocurrency Ethereum mentions Bitcoin protocol to be a weak version of the concept of smart contracts as defined by Nick Szabo.
Since Ethereum, various cryptocurrencies support scripting languages
for more advanced smart contracts between untrusted parties. In the cryptocurrency space, smart contracts are digitally signed in the same way a cryptocurrency transaction is signed. The signing keys are held in a cryptocurrency wallet.
History
Smart contracts were first proposed in the early 1990s by computer scientist, lawyer and cryptographer Nick Szabo,
who coined the term, using it to refer to "a set of promises, specified
in digital form, including protocols within which the parties perform
on these promises". In 1998, the term was utilized to describe objects in rights management service layer of the system The Stanford Infobus, which was a part of Stanford Digital Library Project.
Legal status of smart contracts
A smart contract does not necessarily constitute a valid binding
agreement at law. Some legal academics claim that smart contracts are
not legal agreements, but rather means of performing obligations
deriving from other agreements such as technological means for the automation of payment obligations or obligations consisting in the transfer of tokens or cryptocurrencies.
With the 2015's implementation of Ethereum, based on blockchains,
"smart contract" is mostly used more specifically in the sense of
general purpose computation that takes place on a blockchain or
distributed ledger. Indeed the US National Institute of Standards and
Technology describes a "smart contract" as a "collection of code and
data (sometimes referred to as functions and state) that is deployed
using cryptographically signed transactions on the blockchain network". In this interpretation, used for example by the Ethereum Foundation or IBM,
a smart contract is not necessarily related to the classical concept of
a contract, but can be any kind of computer program. A smart contract
also can be regarded as a secured stored procedure
as its execution and codified effects like the transfer of some value
between parties are strictly enforced and can not be manipulated, after a
transaction with specific contract details is stored into a blockchain
or distributed ledger. That's because the actual execution of contracts
is controlled and audited by the platform, not by any arbitrary
server-side programs connecting to the platform.
In 2017, by implementing the Decree on Development of Digital Economy, Belarus
has become the first-ever country to legalize smart contracts.
Belarusian lawyer Denis Aleinikov is considered to be the author of a
smart contract legal concept introduced by the decree.
In 2018, a US Senate
report said: "While smart contracts might sound new, the concept is
rooted in basic contract law. Usually, the judicial system adjudicates
contractual disputes and enforces terms, but it is also common to have
another arbitration method, especially for international transactions.
With smart contracts, a program enforces the contract built into the
code." A number of states in the US have passed legislation on the use of smart contracts, such as Arizona, Nevada, Tennessee, and Wyoming.
Smart contracts should therefore be distinguished from smart
legal contracts. The latter refers to a traditional natural language
legally-binding agreement which has certain terms expressed and
implemented in machine readable code.
Implementations
Byzantine fault-tolerant algorithms allowed digital security through decentralization to form smart contracts. Additionally, the programming languages with various degrees of Turing-completeness as a built-in feature of some blockchains make the creation of custom sophisticated logic possible.
Notable examples of implementation of smart contracts include the following:
- Bitcoin provides a Turing-incomplete script language that allows the creation of custom smart contracts on top of Bitcoin like multisignature accounts, payment channels, escrows, time locks, atomic cross-chain trading, oracles, or multi-party lottery with no operator.
- Ethereum implements a Turing-complete language on its blockchain, a prominent smart contract framework.
- Ripple (Codius), smart contract development halted in 2015
- DAML is a smart contract language implementation based on GHC.
- Solidity is a object-oriented smart contract language.
- Blockchain domains are another emerging technology powered by smart contracts. They are built from a collection of complex smart contracts.
Replicated titles and contract execution
In 1998, Szabo proposed that smart contract infrastructure can be
implemented by replicated asset registries and contract execution using cryptographic hash chains and Byzantine fault-tolerant replication. Askemos implemented this approach
in 2002 using Scheme
(later adding SQLite) as contract script language.
One proposal for using bitcoin for replicated asset registration and contract execution is called "colored coins".
Replicated titles for potentially arbitrary forms of property, along
with replicated contract execution, are implemented in different
projects.
As of 2015, UBS was experimenting with "smart bonds" that use the bitcoin blockchain
in which payment streams could hypothetically be fully automated, creating a self-paying instrument.
Security issues
A blockchain-based smart contract is visible to all users of said
blockchain. However, this leads to a situation where bugs, including
security holes, are visible to all yet may not be quickly fixed. Such an attack, difficult to fix quickly, was successfully executed on The DAO in June 2016, draining US$50 million in Ether while developers attempted to come to a solution that would gain consensus.
The DAO program had a time delay in place before the hacker could
remove the funds; a hard fork of the Ethereum software was done to claw
back the funds from the attacker before the time limit expired.
Issues in Ethereum smart contracts, in particular, include
ambiguities and easy-but-insecure constructs in its contract language
Solidity, compiler bugs, Ethereum Virtual Machine bugs, attacks on the
blockchain network, the immutability of bugs and that there is no
central source documenting known vulnerabilities, attacks and
problematic constructs.