In the first part of this series about blockchain oracles, we explained the oracle problem, what a blockchain oracle is and how they work in general.
We also gave examples of different blockchain oracle networks and want to continue here with Chainlink as the by far most prominent system and dive deeper into its processes:
Chainlink aims to create a “highly generalized oracle framework where users can create any oracle design pattern to retrieve and validate data in a highly secure and reliable manner”.
This is achieved by building a trusted marketplace for consumers of oracle information and oracle node operators where Chainlink node smart contracts function as middleware and solve the oracle problem. The validation part is tackled mostly through aggregation of pricing data from different sources via multiple nodes and positive incentives for good performance in form of Chainlink Token (LINK) payments to node operators per fulfilled data request. Currently the aggregation process resides on-chain, but Chainlink plans to implement off-chain aggregation in the future. Staking/Slashing (see above) will also be implemented in the future to further increase reliability. Later, we will use Chainlink’s oracle process as an illustrative example of how the technical implementation can be done.
Around Chainlink’s services, a thriving ecosystem of oracle related organizations has emerged. One concrete example is oracle node performance made visible through on-chain analysis (Chainlink Oracle Reputation). Other entities provide Chainlink nodes-as-a-service (https://www.linkpool.io/) or an Oracle market (https://market.link/). On the market, node operators compete for jobs by offering different levels of security guarantees, functionalities, and off-chain data connections.
Chainlink is actively supporting the community with a grant program.
To get a better grasp of how an oracle solution can be implemented technically, let’s take a closer look at the price feeds that Chainlink provides. These feeds are used by many projects mostly from the Decentralized Finance (#DeFi) sector.
Each of the feeds works the same way, consisting of an aggregator contract as well as multiple oracle node contracts with their respective nodes. With the latest process update, the mechanism is now invoked by Chainlink Nodes once they notice a defined deviation between the on-chain and the off-chain price of their data sources. The aggregator contract is subsequently called through the method requestRateUpdate (Transaction 1 in the above chart). This decentralizes the process even further and helps to reduce on-chain transaction load.
The aggregator contract then calls for each oracle node separately the LINK token address, which calls the oracle contract. The oracle contract itself then conducts a delegate call on itself.
Each node listens to its respective oracle contract. This triggers Transaction 2 with the method call fulfillOracleRequest from each node addressed to its owned oracle contract. The oracle contract in return calls the aggregator contract to deliver the data. Once the aggregator contract has received all data, it averages over the results and stores it for consumers to be retrieved until the next update happens. As a node operator one can offer and be assigned to different types of so-called “Jobs” with distinct JobIDs related to certain data (price) feeds. Depending on the activity of the feed, each job call will yield a different Chainlink Token (LINK) payment depending on the price per request and their frequency.
In the future, Chainlink plans to implement the aggregation off-chain through so-called threshold signatures. This will drastically reduce costs and allow the Chainlink Network to scale independently of the Ethereum Blockchain. Also, the accuracy of information aggregation can thereby be greatly improved through access of a larger amount of nodes per information feed. The limiting factor then will only be the cost of off-chain communication between participants.
Our blockchain oracle node at Anyblock Analytics
Anyblock is a long serving Chainlink node operator since summer 2019, and we also provide blockchain data across different networks via our Anyblock Index.
Many smart contracts on the Ethereum Mainnet rely on off-chain data that resides on other blockchains. Specifically for bridging the various side chains with the Ethereum Mainnet, our API serves as a data source and is queryable on-chain via our oracle node.
Furthermore, we have added Bitcoin (BTC) and Litecoin (LTC) as additional blockchains to our data API, with Tezos (XTZ) soon to follow. These networks can then also be utilized for further cross-chain oracle use cases.
Check out our node operator monitoring dashboard and see who is calling which of your Chainlink nodes and jobIDs. You can also identify the consuming smart contract with its callback address and drill-down all the way into the respective on-chain events.
We can also help with your Chainlink Token (LINK) accounting. Check out our dashboard below which lists the node US dollar income in total and per jobID – never miss changes in your oracle revenue stream!
And your spreadsheet export with daily or monthly transactions and LINK token income as well as ETH gas spendings is just a click away to take the hassle out of tax reporting.
Get in touch!
Feel free to get in touch for a demo of our dashboards or just to chat about our blockchain node operations experience. We plan to continuously provide useful tooling for the community and to soon run Chainlink nodes also on other blockchains such as the Energy Web Chain (EWC) or Tezos (XTZ).
If you are new to the Chainlink ecosystem or generally want to learn more about how to implement blockchain oracles for your specific use case – we are happy to help!
Just send us an email: firstname.lastname@example.org