Unlocking the Power of Oracles: Building a Secure Bridge Between Blockchains and Off-Chain Systems
What Are Oracles?
In the world of blockchain, oracles are the unsung heroes that connect blockchains to external systems, enabling access to data from off-chain sources. They act as a source of truth to the blockchain, providing secure gateways to off-chain systems and allowing smart contract applications to verify external events and trigger actions on external services.
Understanding the Technologies Behind Oracles
To grasp the concept of oracles, it’s essential to understand the technologies that make them possible. Let’s take a brief look at the blockchain, Ethereum, and smart contracts.
- Blockchain: A computing infrastructure designed to facilitate highly trustworthy collaboration. It’s a public database that is updated and shared across many computers in a network.
- Ethereum: A decentralized application platform that allows anyone to define, create, and trade cryptocurrencies and crypto-assets. It possesses an inbuilt, Turing-complete programming language, establishing a smart contract.
- Smart Contracts: A way to establish trust in a collaborative process on the blockchain. They replace brand-based trust with cryptographically-based trust by moving the enforcement and custody mechanisms of a contract to software logic, which is run across a decentralized network.
Setting Up for Success
To develop an oracle with an Ethereum smart contract, we’ll need a few tools:
- Remix: A web IDE for creating, running, and debugging smart contracts in the browser.
- MetaMask: A wallet that allows anyone to interact with Ethereum-compatible blockchains, enabling the creation of an address.
- Chainlink: A decentralized oracle network that provides an out-of-the-box ability to connect our smart contracts to most APIs, including off-chain APIs.
Project Overview
In this article, we’ll explore the process of retrieving the current price of Bitcoin from an off-chain system, leveraging the Chainlink client, to create an oracle smart contract. We’ll also retrieve the latest price of Ethereum using an authenticated on-chain data source from Chainlink.
Creating Our RequestPrice Oracle
Using Remix, we’ll create a new file named RequestPrice.sol, which will hold our smart contract code. We’ll define our smart contract and set our data source to the public API CryptoCompare. The function requestPriceData defined in our contract allows the retrieval of the current price of BTC in USD.
Compiling and Deploying Our Smart Contract
After compiling our contract, we’ll navigate to the Deploy and Run tab and select the Injected Web3 environment to deploy the contract to the blockchain. We’ll ensure our MetaMask wallet is set to the Kovan network before accepting the transaction.
Running Functions in the RequestPrice Smart Contract
To run the functions in our contract, we’ll fund the contract with the native token of the Chainlink network, LINK. We’ll then use the Copy button near the contract title to copy the contract address and send LINK to the contract.
Returning to Our Remix IDE
Under the Deploy and Run Transactions tab, we’ll navigate to the Deploy Contract section and click the requestPriceData button. We’ll receive a prompt from MetaMask asking for confirmation of the transaction. Finally, we’ll click the price variable button to see the current price of Bitcoin in USD.
Using Chainlink Data Feeds to Retrieve Data
In our next implementation of a smart contract, we’ll look at a more in-depth implementation using Chainlink Data Feeds. We’ll create another file in Remix called EthPrice.sol and deploy the contract from the Deployment tab. We’ll then run the function to retrieve the latest price of Ethereum using an authenticated on-chain data source from Chainlink.
The Future of Oracles
Creating secure and trustworthy oracles is a key aspect of the blockchain revolution, as it enables the movement of off-chain world systems onto on-chain systems. By providing accurate data to our decentralized applications, we can unlock the full potential of blockchains and smart contracts.