The term “smart contract” has no clear and settled definition. They are defined variously as “autonomous machines”, “contracts between parties stored on a blockchain” or “any computation that takes place on a blockchain”. Many debates about the nature of smart contracts are really just contests between competing terminology. The different definitions usually fall into one of two categories. Sometimes the term is used to identify a specific technology – code that is stored, verified and executed on a blockchain. Let’s call this type of definition “smart contract code”. Other times, the term is used to refer to a specific application of that technology: as a complement, or substitute, for legal contracts. Let’s name these “smart legal contracts”. Using the same term to refer to distinct concepts makes answering even simple questions impossible. For instance, one question I’m often asked is simply: what are the capabilities of a smart contract? If we are talking about smart contract code, then the answer depends on the capabilities of the language used to express the contract and the technical features of the blockchain on which it operates.
Smart contracts as smart contract code Blockchains can run code. While the first blockchains were designed to perform a small set of simple operations – mainly, transactions of a currency-like token – techniques have been developed to allow blockchains to perform more complex operations, defined in full-fledged programming languages. Because these programs are run on a blockchain, they have unique characteristics compared to other types of software. First, the program itself is recorded on the blockchain, which gives it a blockchain’s characteristic permanence and censorship resistance. Second, the program can itself control blockchain assets – i.e., it can store and transfer amounts of cryptocurrency. Third, the program is executed by the blockchain, meaning it will always execute as written and no one can interfere with its operation. In many cases, smart contract code is not used in isolation but as a small piece in a larger application. Every DApp, DAO, or other blockchain-based application is built using smart contract code to perform operations on their chosen blockchain. Any Ethereum application that you’ve read about – like Augur, Slock.it, or Boardroom – is made out of smart contract code.
Smart contracts as smart legal contracts Among those who work in finance or law, the term “smart contract” is often read quite differently than the definition above. “Smart contract” here refers to a specific use case of smart-contract code – a way of using blockchain technology to complement, or replace, existing legal contracts. This is the definition of the term I considered in my last piece: the use of code to articulate, verify, and enforce an agreement between parties. A smart legal contract. These smart legal contracts would most likely be a combination of smart contract code and more traditional legal language. For instance, imagine a supplier of goods enters into a smart legal contract with a retailer. The payment terms could be defined in code and executed automatically when delivery is made. But the retailer would likely insist the contract include an indemnity clause, whereby the supplier agrees to indemnify the retailer against claims flowing from a defective product. There would be no point representing this clause in code, since it is not something that can self-execute – it exists to be interpreted and enforced by a court in the case of litigation.
Many contracts, many use cases The category of smart legal contracts is complicated by the fact that there are many different types of contracts in the world, only some of which are obvious candidates for use as “smart contracts”. A legal contract could be anything from a verbal agreement for someone to paint your house to a derivative traded electronically in financial markets. Since early 2015, the use cases attracting the most attention are smart legal contracts as smart financial instruments like shares, bonds, or derivatives contracts.
Alternatives to traditional legal agreements Many advocates for blockchain technology see larger possibilities. Rather than merely imitate or complement the legal contracts we use today, perhaps smart contract code could be used to facilitate new types of commercial arrangements. We might even call this a third definition of the term: using smart contract code to create novel, alternative forms of agreements that are nonetheless commercially useful. Smart alternative contracts might let us stretch the web of trust out a little further, a little faster, beyond the reach of the legal system, where they can enable new forms of commerce not possible today.
The lack of clear terminology in this field is an unfortunate reality. Those of us who work in the blockchain space should be mindful of how the term is being used in different communities, and be prepared to ask a series of annoying, though necessary, clarifying questions when asked about the nature and potential of “smart contracts”. The different uses of the term illustrate a broader challenge in our industry.