DEV Community

Cover image for Build a Smart Contract with Chainlink: Bringing Real-World Data to Blockchain
henry_68930cc9
henry_68930cc9

Posted on

Build a Smart Contract with Chainlink: Bringing Real-World Data to Blockchain

🚀 Build a Smart Contract with Chainlink: Bringing Real-World Data to Blockchain
Blockchain is an amazing technology — secure, decentralized, transparent. But there’s one thing it cannot do by default: access real-world data.

So how do we bring off-chain information like crypto prices, weather, or sports scores into a smart contract?

That’s where Chainlink comes in.

🔍 What’s the Problem?
Smart contracts live entirely on the blockchain. They’re deterministic and can’t just call external APIs like a regular web app. That means they can’t:

Know the current ETH/USD price

Detect if it rained today

Fetch data from an external database

But many real-world applications depend on exactly this kind of data.

🧠 What Is Chainlink?
Chainlink is a decentralized oracle network that acts as a bridge between blockchains and the real world. It feeds your smart contract with external data in a secure, trust-minimized way.

Core services of Chainlink include:

✅ Decentralized Price Feeds (e.g., ETH/USD)

🎲 Verifiable Randomness (VRF)

🕒 Automation (formerly Keepers)

🌐 External APIs via Any API

🔧 Let’s Build: A Price Feed Smart Contract
We’ll write a basic Solidity smart contract that fetches the latest ETH/USD price using Chainlink’s Price Feed on the Sepolia Testnet.

  1. Prerequisites Node.js & Hardhat installed

Metamask connected to Sepolia

Some test ETH (via faucet)

  1. Install Chainlink Contracts bash Copy Edit npm install --save-dev @chainlink/contracts
  2. Smart Contract Code solidity Copy Edit // SPDX-License-Identifier: MIT pragma solidity ^0.8.7;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract EthPriceConsumer {
AggregatorV3Interface internal priceFeed;

constructor() {
    // Sepolia ETH/USD Price Feed Address
    priceFeed = AggregatorV3Interface(
        0x694AA1769357215DE4FAC081bf1f309aDC325306
    );
}

function getLatestPrice() public view returns (int) {
    (, int price,,,) = priceFeed.latestRoundData();
    return price;
}
Enter fullscreen mode Exit fullscreen mode

}
You can find more feed addresses at: https://docs.chain.link/data-feeds/price-feeds/addresses

  1. Deploy on Sepolia Use Hardhat to deploy your contract. In scripts/deploy.js:

js
Copy
Edit
async function main() {
const PriceConsumer = await ethers.getContractFactory("EthPriceConsumer");
const priceConsumer = await PriceConsumer.deploy();
await priceConsumer.deployed();
console.log("Deployed to:", priceConsumer.address);
}
Then:

bash
Copy
Edit
npx hardhat run scripts/deploy.js --network sepolia
⚡ Real-World Use Cases
DeFi: Decentralized exchanges need real-time token prices

Insurance: Smart contracts trigger claims based on real-world weather data

Gaming: Use Chainlink VRF for provably fair loot boxes

DAOs: Automate on-chain tasks based on external events

💡 Final Thoughts
Blockchain without oracles is like a computer without internet — powerful, but disconnected.

Chainlink gives your smart contracts eyes and ears in the real world, unlocking a huge range of decentralized apps that interact with real-time, trustworthy data.

If you’re building in Web3, learning how to integrate Chainlink is one of the best skills you can pick up today.

🧪 Try It Yourself
You can fork this example, deploy to Sepolia, and even extend it to:

Trigger payouts based on price thresholds

Connect to external APIs using Chainlink Functions

Use VRF to randomize NFT minting

Got any questions or want a deeper guide? Drop them in the comments! 💬

Top comments (0)