The Blockchain Oracle Problem
Definition of the Oracle Problem
The blockchain oracle problem arises from the fact that blockchains cannot access external data, effectively making them isolated systems, much like a computer without an Internet connection. To connect the blockchain (on-chain) with the outside world (off-chain), an additional piece of infrastructure called an oracle is required.
This problem is a significant obstacle to the widespread adoption of smart contracts on networks like Ethereum across various markets and use cases.
Smart contracts on blockchains have the potential to transform how independent entities engage in agreements and exchange value. However, these blockchain-based contracts operate separately from the larger non-blockchain digital economy, which includes all Internet-connected devices. This digital infrastructure produces vast amounts of data and APIs, offering insights into various aspects of the world, such as popular topics from Internet searches or traffic patterns from IoT sensors.
The combination of blockchain-based smart contracts and traditional data and API economies into hybrid smart contracts could form the future architecture of data-driven automation. The challenge lies in connecting these two worlds, which is the essence of the "oracle problem," and is the focus of this article.
The article is divided into five key sections:
- The oracle problem
- The role of an oracle
- Why blockchains like Ethereum don’t offer native oracle solutions
- The security risks of centralized oracles
- Chainlink, the standard for secure and reliable decentralized oracle networks
What Is the Oracle Problem?
The oracle problem is based on a simple limitation: blockchains cannot inherently pull in or push out data to external systems. This isolation makes blockchains highly secure and reliable, as they only need to reach consensus on basic binary questions using data already stored within their ledger. These questions include verifying if a transaction is signed by the correct private key, if an address has sufficient funds, and if a transaction type is valid within a smart contract. This narrow focus is why smart contracts are highly deterministic—they execute as written with a high degree of certainty.
However, to unlock their full potential, smart contracts need to connect with the outside world. For example, financial smart contracts require market data for settlements, insurance contracts need IoT and web data for policy decisions, trade finance contracts need digital documents and signatures to release payments, and many contracts need to settle in fiat currency on traditional payment networks. This external information is not natively generated within the blockchain nor directly accessible.
Connecting blockchains to external systems requires a separate piece of infrastructure known as an oracle.
What Is a Blockchain Oracle?
A blockchain oracle is a secure middleware that enables communication between blockchains and external systems, including data providers, web APIs, enterprise backends, cloud providers, IoT devices, e-signatures, payment systems, other blockchains, and more. Oracles perform several key functions:
- Listen: Monitor the blockchain for incoming requests for off-chain data.
- Extract: Retrieve data from external systems like APIs hosted on third-party servers.
- Format: Convert external data into a blockchain-readable format and vice versa.
- Validate: Generate cryptographic proof attesting to the oracle service's performance.
- Compute: Perform secure off-chain computations for smart contracts.
- Broadcast: Send data and proofs to the blockchain for smart contract consumption.
- Output (optional): Relay data to external systems upon smart contract execution.
Oracles must operate both on and off the blockchain. The on-chain component handles blockchain connections, data broadcasting, and on-chain computations, while the off-chain component processes requests, retrieves and formats data, and performs off-chain computations for scalability, privacy, and security.
Why Blockchains Can’t Solve the Oracle Problem
Blockchains are secure and reliable due to their design principles, focusing on basic binary questions using data within their ledger. This design leverages decentralization to validate data and maintain the consensus algorithm's integrity. However, blockchains are not suited for answering subjective questions or using external data not easily accessible to all network nodes.
Introducing subjectivity at the blockchain's base layer would create security, reliability, and governance concerns, jeopardizing the blockchain's value proposition. Ensuring high-quality external data is challenging, and integrating oracles at the base layer would reduce decentralization and scalability. Each new data source or method adjustment requires extensive governance coordination, slowing development and increasing risks for all applications on the blockchain.
To maintain their determinism and security, blockchains operate without integrated oracles, while separate oracle networks provide the needed flexibility to handle external data.
Centralized Blockchain Oracles Introduce Major Risks
The purpose of a smart contract is to achieve determinism through technological enforcement rather than human intervention. This requires the entire system, including the oracle, to be free of single points of failure. A centralized oracle undermines this by introducing a central point of failure in the smart contract.
Centralized oracles, whether run by the development team or a third party, give excessive control to a single entity, making the system vulnerable to downtime, attacks, hacks, and incompetence. As the value of contracts grows, centralized entities become susceptible to bribes, intimidation, and regulatory pressure, making this model unsustainable for secure and reliable automation.
To overcome these issues, oracles must offer the same security and reliability guarantees as blockchains, albeit in a different manner due to their differing functions.