Smart Contracts and the Real World — A Complicated Relationship
Connectivity and privacy issues limit the number of real world applications
One of the key innovation areas of Ethereum are smart contracts. The basic idea is to have programmable, self-executing contracts that are recorded and executed on the blockchain. Many people argue that smart contracts could potentially revolutionize the provision of many kinds of financial products and services. However, many real world applications are simply not viable (at least not today) and there are various misconceptions that people hold about smart contracts. Most of the issues and misconceptions center around the endeavor to get high quality data into and widely accepted payments out of the decentralized system. In addition, there are issues that relate to the privacy of smart contract code.
Getting High Quality Data In
By definition, smart contracts are unable to communicate directly with the outside world, mainly for reasons of efficiency and security. As a result, they do not reach out for data and pull them in. Instead, data aimed at changing the state of a contract need to be pushed onto the blockchain. One way to do this is through one or more trusted parties, called “oracles”. Oracles provide a connection between online data feeds and smart contracts. Through an oracle every node on the network will receive the exact same data when executing a smart contract. This is crucial as the blockchain is based on a consensus mechanism and all nodes have to agree on a certain state when processing transactions and blocks.
To give you an example, imagine a smart contract that pays out a dividend if the profit of an organization exceeds a certain threshold. Who is going to the tell the smart contract whether the payout threshold has been reached? Is it the managers, data providers like Thomson Reuters, or is it multiple data providers in conjunction? This is where oracles come in. They collect data from one or more data providers, provide evidence that they did no modify the data themselves and then push them onto the blockchain.
So while the processing of transactions and the execution of contracts can be done in a fully decentralized way, the input of historic data is provided by one or more centralized service providers. It could be a data provider such as Capital IQ or Thomson Reuters. In fact, a few days ago, Thomson Reuters released a beta version of a tool that connects its data streams to the blockchain. This has enabled the company to effectively move from a mere data provider to an oracle for the Ethereum ecosystem.
Getting Widely Accepted Payments Out
When smart contracts try to initiate events in the real world, a similar connectivity problem arises. In a decentralized system, a smart contract cannot just simply call an API to transfer fiat money into a bank account. While the transfer from crypto tokens into fiat money is an obvious issue, there is another big issue for the provision of payments. While every node has to independently execute the contract code, it is not viable for every node to also call an external API. There are currently over 30,000 nodes on the Ethereum network and that number is set to increase. APIs may not be able to deal with such a large number of requests. Choosing only a certain number of nodes to call an API is risky as these nodes may be dishonest and therefore cannot be trusted with an API key.
Therefore, instead of the smart contracts calling an external API many times, a trusted financial services provider could monitor the blockchain’s state and making transfers that mirror on-chain transactions. However, this is far from ideal as the chain plays an entirely passive role and the on-chain contract would not be the definitive record of what happens to a certain financial product.
Privacy Issues with Smart Contracts
There are many smart contract applications for which there is a stringent need for privacy either for the comfort of the users or for legal reasons, or both. This is something that smart contracts cannot provide. Most smart contract networks today cannot process encrypted data on-chain. While there are ways to mask the contents, it is not possible to keep them completely private. Reliable privacy can only be achieved by off chain computation along with some form of compliance. In the future, however, on-chain computation of encrypted data may be feasible for the many use cases in which privacy is a concern.
Overall, smart contracts have significant limitations for real world applications. They are not yet able to compete with contracts/financial products by financial institutions, as these institutions are still significantly better at dealing with the complexity of conditional value transfer. Yet, as a method to manage and automate procedures in a decentralized database, smart contract are undoubtedly a useful tool.