آموزش ادغام اوراکل‌های RedStone در قراردادهای هوشمند و دیپلوی آن‌ها روی شبکه آزمایشی

1. نصب SDK RedStone

ابتدا باید SDK مرتبط را در پروژه خود نصب کنید. از دستور زیر استفاده کنید:

npm install @redstone-finance/evm-connector

2. نوشتن قرارداد هوشمند

یک قرارداد ساده برای استفاده از داده‌های قیمت اوراکل بنویسیم:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@redstone-finance/evm-connector/contracts/DataReceiver.sol";
contract PriceConsumer is DataReceiver {
 function getPrice() public view returns (uint256) {
 bytes32 dataFeedId = bytes32("ETH");
 uint256 ethPrice = getDataFeedValue(dataFeedId);
 return ethPrice;
 }
}

3. تنظیم محیط برای دیپلوی

در پروژه خود یک فایل hardhat.config.js ایجاد کنید و شبکه آزمایشی مثل Rinkeby یا Sepolia را اضافه کنید:

require("@nomiclabs/hardhat-waffle");
module.exports = {
 networks: {
 rinkeby: {
 url: "https://rinkeby.infura.io/v3/YOUR_INFURA_PROJECT_ID",
 accounts: ["YOUR_PRIVATE_KEY"]
 }
 },
 solidity: "0.8.0"
};
4. دیپلوی قرارداد
یک فایل اسکریپت برای دیپلوی ایجاد کنید، به‌عنوان مثال scripts/deploy.js:
async function main() {
 const PriceConsumer = await ethers.getContractFactory("PriceConsumer");
 const priceConsumer = await PriceConsumer.deploy();
 console.log("Contract deployed to:", priceConsumer.address);
}
main()
 .then(() => process.exit(0))
 .catch((error) => {
 console.error(error);
 process.exit(1);
 });

سپس با استفاده از Hardhat قرارداد را دیپلوی کنید:

npx hardhat run scripts/deploy.js - network rinkeby

5. تست قرارداد

پس از دیپلوی، از طریق یک فایل تست یا اسکریپت دیگر می‌توانید عملکرد قرارداد را بررسی کنید و داده‌های قیمت را فراخوانی کنید.

async function main() {
 const priceConsumer = await ethers.getContractAt("PriceConsumer", "YOUR_CONTRACT_ADDRESS");
 const ethPrice = await priceConsumer.getPrice();
 console.log("ETH Price:", ethPrice.toString());
}
main();

این مراحل به شما کمک می‌کنند تا SDK RedStone را نصب کنید، قرارداد هوشمند خود را دیپلوی کنید و آن را روی شبکه آزمایشی مانند Sepolia تست کنید.

Loading...
highlight
Collect this post to permanently own it.
0xmasoud.eth logo
Subscribe to 0xmasoud.eth and never miss a post.