The Web3 eco-system augmented by the blockchain landscape is evolving at a breathtaking pace, and since I am an active member of Chainlink Developer Experts I've recently found myself exploring an exciting integration that combines the best of several worlds - Bitcoin's rock-solid security, Ethereum's smart contract capabilities, and real-world data through the Chainlink decentralized oracle network (DON).
Today, I want to share my journey of building hybrid smart contracts by combining Rootstock (RSK) with Chainlink's oracle services, all while using Hardhat as our development framework. Please find it here on my GitHub: https://github.com/EdwinLiavaa/Rootstock-Chainlink-Hardhat-Starterkit
The beauty of this integration lies in its strategic combination of strengths. Rootstock, being merge-mined with Bitcoin, inherits its unparalleled security model while maintaining full EVM compatibility. This means we can leverage the entire Ethereum development ecosystem while building on Bitcoin's foundation. Add Chainlink's oracle network to the mix, and we suddenly have the ability to create smart contracts that can interact with real-world data and systems.
Before we dive into the technical details, make sure you have Node.js and nvm version manager for node.js installed on your system since we'll need it to install and use Node version 18.0.0 that is compatible with Rootstock starter kit. You'll also need Hardhat and a basic grasp of smart contracts with Solidity and JavaScript/TypeScript. You'll also need a Metamask wallet configured for the Rootstock network and some test RBTC if you're planning to follow along.
Let's start by setting up our development environment. First, we'll clone the Rootstock Hardhat Starter Kit, which provides a solid foundation for our project:
Now, let's install all the required dependencies:
Let's rename our project directory to better reflect its purpose:
We'll need to modify our package.json and package-lock.json to reflect our project's new name and add Chainlink specific dependencies:
After installation, add the plugin to your Hardhat config:
The magic happens in our configuration setup. We need to tell Hardhat how to work with both Rootstock and Chainlink. I've found that keeping this configuration clean and well-organized saves countless hours down the line. Update your hardhat.config.ts
file:
Don't forget to create a .env
file to store your sensitive information:
Next, let's test our RootStock configuration, but first make sure you have sufficient Testnet RBTC funds available on your Metamask wallet. You can get some from a Rootstock Testnet Faucet.
Then, let's deploy the contract. We'll use the --tags
flag to only deploy the MultiToken 1155
contract.
Output:
Next, let's test our Chainlink confirguration to get a list of all available getter-method for a specific registry:
Output:
Now, let's build something practical - a smart contract that taps into Chainlink's Price Feeds on Rootstock to get real-world asset prices. This is particularly useful if you're building DeFi applications that need reliable price data. Here's what that looks like:
To bring our contract to life, we need a deployment script. Create scripts/deploy.ts
:
Next, let's deploy our hybrid smart contract to the Rootstock RSK Testnet:
Output:
The magnificence of combining Rootstock with Chainlink through Hardhat is that it opens up a world of possibilities. You're not just building smart contracts; you're given the opportunity to creating secure, Bitcoin-based applications that can interact with real-world data. The security of Bitcoin's network, the flexibility of EVM compatibility, and reliable external data through Chainlink oracles - it's a powerful combination that's greater than the sum of its parts.
As I continue exploring this space, I'm excited about the possibilities. There's so much more to dive into - The Chainlink Cross-Chain Interoperability Protocol (CCIP) is a blockchain protocol that allows for the secure transfer of data and tokens across different blockchains. Also the Chainlink Verifiable Random Function (VRF) for verifiable randomness, automation for contract maintenance, and building more complex DeFi applications using price feeds. The ecosystem is rich with opportunities for innovation.
Moreover, I would like to quote Edward Snowden's Keynote during Bitcoin 2024: “We are winning, ladies and gentlemen.” Yes, we are winning some of the battles we have fought by far in our domain, but we have not won the war yet. This is what the Bitcoin revolution is all about. We need to consolidate all our efforts, our strengths to integrate them by building a stronger eco-system with our existing tools and protocols. Let's continue pushing the boundaries of what's possible in the world of hybrid smart contracts if we want to win this war.
As a matter of fact, a year ago on 8 Oct 2023 I documented on my GitHub my integration of Hedera and Chainlink using Hardhat. It's been a while coming, but finally in October 2024 Hedera has announced that they have joined the Chainlink Scale program and are bringing the industry-leading oracle solution to Hedera, starting with Chainlink Data Feeds and CCIP. I would love nothing less than to do the same for Rootstock.
I'd love to hear about your experiences combining these technologies. What are you building? What challenges have you faced? Let's continue pushing the boundaries of what's possible in the world of hybrid smart contracts.
When I'm not exploring the intersection of Bitcoin and Smart Contracts, you can find me blogging and mentoring enthusiasts of all ages. Follow me here on Hacekernoon for more insights and updates.