Uber, Tinder, Spotify, Pinterest: every time you login to any of these apps using your Facebook account, you are using a smart contract. How’s that?

A smart contract is a mechanism to formalize and automate relationships using computer code. Unlike traditional PDF contracts, all terms and outcomes of an agreement are clearly defined as a set of programmable rules. In a smart contract, the obligations of each party can be executed using a computer program, instead of relying on human intervention.

Log in With Facebook is an example of a smart contract run by Facebook, between you and a third-party app, where you trade your personal information for access, in one tap:

Log in With Facebook is a Smart Contract where user information is traded for access to a third-party App.

The terms of the relationship between you and Uber are established by Facebook using a simple UX. There are no lawyers involved, it takes a couple of seconds to understand, and the transaction is carried out automatically by Facebook when you tap — “sign” — the ‘OK’ button.

In this way, smart contracts greatly reduce the transaction costs of establishing a contractual relationship. This is a key feature of smart contracts, enabling new kinds of relationships that were previously unthinkable or too small to formalize.

A computer executing a contract is less prone to mistakes, delays and corruption than a human counterpart. The obligations are automatically triggered by pre-defined events, such as the signature of the contract. Hence, smart contracts also help reduce the risk of the other party not living up to their obligations.

But the definition of smart contracts goes beyond logging in to an app. Since the beginning of computation we used primitive smart contracts such as the vending machine, ATM, phone shopping and, recently, internet shopping. We are now getting closer to encoding a greater range of interactions.

Why is everyone talking about smart contracts now?

Even though a computer is less prone to fail obligations than a human, there are still some risks involved.

In the previous login example, once the transaction has occurred and your personal data has been transferred, Uber could easily fail its obligation and deny you access.

Also, both you and Uber rely on Facebook for the execution of the contract: Uber trusts Facebook to provide the correct information requested, while you trust Facebook to provide only the details you agreed to share. When we trust a third party for executing our smart contracts, we assume third-party risk.

We do trust Uber and Facebook because of their strong brand, reputation and security. But how can we achieve the same level of trust on the internet, when the other parties are unknown?

Enter Blockchain technology

For the first time in the history of human kind, we have a distributed consensus system: the blockchain. Since we can attach programs to blockchain transactions, we can establish rules and run computer programs in a distributed network without a central authority.

This means that, instead of relying on a single party to execute our smart contracts, we have an always-available, global, distributed network of computers to do it. All these computers run the same computation in parallel and agree on a unique result. The security of this network is backed by cryptography and the hashing power of miners.

By running smart contracts in the blockchain, there is no need to trust a single party for the execution of the terms.

Not only this, but the immutability of the blockchain makes it impossible for anyone to change the code after the fact. Therefore, using smart contracts on the blockchain helps us reduce the risk of a third party failing to execute a contract as it was originally meant to.

There are still puzzles to solve

A puzzle from The Witness.

The implementation and deployment of smart contracts in blockchain-based systems (Bitcoin, Ethereum, and others) has shown to be quite challenging.

TheDAO taught us that security is still a major concern when building smart contracts. We can practically eliminate third-party risk as previously discussed, but smart contract code can still be vulnerable to bugs and attacks.

Moreover, the scope of smart contracts is not yet clear. Some projects proposed code to capture very complex human interactions such as organizational governance and decision-making. There are non-trivial game theory dynamics involved that emerge from introducing smart contract mechanics.

Even though execution of smart contracts in the blockchain is automated, they still serve the hugely complex world of humans. From hard forks, to moderators, to law enforcement, there are no established processes and best practices for conflict resolution yet.

We first need to make simpler contracts work by establishing a clear set of security standards and best practices. From there, we can start experimenting with more complex interactions, such as automating the operations of a company.

This is something we are very interested in at Smart Contract Solutions. We are working on tools to create secure smart contracts and model simple business rules. Follow us on Medium to learn about our future announcements.