What are Smart Contracts?
Smart contracts help you exchange money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman. The best way to describe smart contracts is to compare the technology to a vending machine. Ordinarily, you would go to a lawyer or a notary, pay them, and wait while you get the document. With smart contracts, you simply drop a bitcoin into the vending machine (i.e. ledger), and your escrow, driver’s license, or whatever drops into your account. More so, smart contracts not only define the rules and penalties around an agreement in the same way that a traditional contract does, but also automatically enforce those obligations.
A public blockchain can be imagined in the following way:
- An identical agreement is written on a set of enhanced documents.
- Anyone can take part in maintaining this agreement by owning one of these documents.
- Rules describe the changes you are allowed to make to a document.
- Any valid change to one document is automatically made to all the other documents.
These properties result in each participant owning an identical copy of the same agreement, even though the agreement undergoes continuous change.
The original set of enchanted documents is called Bitcoin, the rules for this set of documents are:
- Each enchanted document contains a list of all accounts and balances.
- People own accounts, and can send their own bitcoins to other accounts.
In essence, these rules create a digital cash.
Another set of documents is called Ethereum. The enchanted documents that make up Ethereum follow very similar rules to Bitcoin:
- Each enchanted document contains a list of all accounts and balances.
- Owners of accounts can send transactions to other accounts.
Those of you with an eye for details might have noticed slight differences in wording between the second rule of Ethereum and the second rule of Bitcoin. The difference is that some accounts on the Ethereum blockchain are not controlled by people. Instead, the actions of these accounts are controlled by a set of instructions residing on the accounts.
When a set of instructions reside on one of these accounts it is called a smart contract. The instructions are just computer code, essentially just logic. If “poked” by a transaction from another account, the smart contract can:
- Perform calculations
- Store information
- Send transactions to other accounts
As mentioned, the account with the code is not controlled by any person, it is completely autonomous! The original code is written by a person, but once the smart contract code is uploaded to the blockchain, only the logic in the account dictates the actions of that account.
Many people are critical of the name “smart contract”. One reason being that a smart contract is not necessarily smart. It is just a set of instructions that anyone can write, and people are very capable of creating some pretty dumb smart contracts.
The name smart contract is also misleading because it is not really a contract, at least not in the sense that it’s anything that needs to be complied with or upheld. A normal contract has legal consequences in the ‘real world’. If the counterparty of a contract does not uphold their part of the agreement, the legal system can be used to hold them accountable. On the contrary, a smart contract does not have to be upheld by anyone, it’s a set of instructions that self-executes. A smart contact does not have much precedence in the ‘real world’. It is only able to send transactions to other accounts on the blockchain, any other precedence must be acquired by creating a legal wrapper around the blockchain agreement.
Code is law
When entering into a normal contract, several factors play an important role in whether you can trust what you are signing. The most obvious part is an understanding of what is written in the contract. The contract lays out the terms and conditions of an agreement in legalese (lawyer language), which is what you are committing to. Therefore, it is important to understand this legalese and how this is interpreted by the legal system. This is why you always carefully read the terms and conditions of your Spotify/Facebook/etc agreement. You would never sign an agreement that commits you to providing your firstborn as payment for using their service, as 98% of people in one case did.
Secondly, the terms and conditions that are laid out in a contract are constrained by a large body of existing law. This means that you can’t be sure how the contract will play out by just looking at the content of the contract. There are laws that prohibit you from paying with your firstborn, even if you agree to this. Therefore, it is important to understand how this legal context plays in.
These contextual laws often work as a safeguard, at times making contracts work as intended instead of as written. Journalist Matt Levine has an articleabout JPMorgan receiving a hefty fine, even after following the conditions set forth in a contract. The contract regulated the electricity market, and JPMorgan found a way to game the contract. JPMorgan did not break the rules set forth in the contract, they followed them carefully, but they did break the intent of the contract and were caught in the net of market manipulation laws.
Even if you enslave your firstborn to try and uphold your part of a contract, there is still a risk that this is not enough. You could sell all your belongings and sell your family into debt bondage, but it might still not cover your obligations in the agreement, and so the other guy ends up not getting paid. The risk of entering into a contract with someone who is not able to fulfill their part of the agreement is called counterparty risk, and must also be taken into account when entering a contract.
Last of all, even if you understand the contract and the legal context you still need to trust in the rule of law. Sometimes, de jure ≠ de facto. That’s why you might be hesitant to enter into an agreement with the son of the president in Corruptland. The contract is not worth the paper it’s written on.
So how do these factors compare to smart contracts? A smart contract essentially consists of two elements which you need to understand/trust:
- The code and how this is interpreted
- The immutability of the blockchain
Just like with normal contracts, it´s important to understand the actual content of a smart contract when interacting with it. But unlike a normal contract, which is written in legalese and interpreted by the legal system, the content of the smart contract is written in computer code and interpreted by computers. So what does smart contract code actually look like? Below is an example, an extract of a smart contract (don’t worry, you’re not expected to understand it):
The smart contract code is the terms and conditions that you are signing up for when interacting with a smart contract. As long as you trust the blockchain that the smart contract resides on, you know that the code will execute exactly as programmed – so no breach of agreement can exist. It is important to note however, that working as programmed does not mean that it will work as intended if there are errors in the code.
Smart contract applications
As we have already established, smart contracts are a set of instructions residing on a blockchain, written in computer code. This code can be written in an infinite number of ways, just like words specifying the terms and conditions of a normal contract can be written in an infinite number of ways. But like words in a sentence, there is an infinite number of ways to arrange the code in a smart contract that does not make sense. That’s not interesting and no one cares. What is interesting however, are the ways to arrange the logic which makes sense. So what does make sense?
Before we answer that question for smart contracts, let us take a step back and consider the imagined potential applications of blockchains.
After the original Bitcoin paper was published, people started to realize that other types of agreements could be maintained using the same underlying technology. People imagined other agreements which would specify ownership of different types of assets and the rules for how the agreements would be updated. Some of these other applications were:
- Digital identities (e.g. websites)
- Non-digital assets such as gold, oil and real estate
- A country’s currency, and other new types of currency
- Financial instruments such as shares, mortgages and bonds
- Provably fair gambling and betting
- Rules for a data storage market
- Rules for a computational market
The challenge was that each blockchain was being built with one application in mind. Every new application required a whole new blockchain, and creating a new blockchain requires a lot of resources, since a set of participants need to start maintaining a new agreement.
Smart contracts changed this. The magic rules that define the functionality of one blockchain can be replicated into smart contracts on an existing smart contract blockchain. This means that instead of building a new blockchain for every type of application, it is possible to add several types of applications to one blockchain by using smart contracts. You essentially have many blockchains on the same blockchain.