پیوند زنجیره ای اوراکل(Chainlink Oracle) در قرارداد هوشمند

پیوند زنجیره ای اوراکل(Chainlink Oracle) در قرارداد هوشمند
اکوسیستم Chainlink یک API ارائه می دهد که به شما امکان می دهد قرارداد هوشمند خود را به مجموعه ای از شبکه های غیرمتمرکز اوراکل متصل کنید. این اوراکلها انواع دادههایی را ارائه میکنند که میتوانید در قرارداد خود ادغام کنید. به عنوان مثال، می توانید قرارداد هوشمند خود را به داده های آب و هوا، قیمت سهام، اطلاعات حمل و نقل، اطلاعات ورزشی متصل کنید.
Chainlink بدین صورت کار می کند:
- ارائه دهندگان داده، داده های خود را در محیط Chainlink می فروشند. این یک راه عالی برای یک ارائه دهنده داده قابل اعتماد برای کسب درآمد اضافی است.
- اپراتورها، قدرت محاسباتی و زیرساخت اوراکل را برای سرویس بلاکچین قرارداد هوشمند فراهم می کنند. اپراتورهای Node با ارائه این سرویس درآمد کسب می کنند.
- توسعه دهندگان اوراکل ها را در کد قرارداد خود ادغام می کنند. هنگامی که از Oracle استفاده می شود، قرارداد هزینه ای را توسط توکن های لینک دریافت می کند.
نمونه قرارداد با Chainlink Oracle
در کد زیر یک قرارداد هوشمند ساده Solidity است که قیمت ETH را از یک Oracle قابل اعتماد دریافت می کند. نظرات موجود در کد را بخوانید تا بفهمید چگونه کار می کند.
با تامین مالی کیف پول خود شروع کنید.
- Kovan ETH faucet: https://faucet.kovan.network
- Kovan ETH faucet: https://kovan.chain.link
1- کد زیر را در Remix کپی کنید و در شبکه آزمایشی دپلوی کنید.
pragma solidity ^0.6.0;
import "https://raw.githubusercontent.com/smartcontractkit/chainlink/develop/evm-contracts/src/v0.6/ChainlinkClient.sol";
//contracts are like classes
//this Chainlink example inherits from ChainlinkClient
contract ChainlinkExample is ChainlinkClient {
//define state variables stored on the block chain
uint256 public currentPrice;
address public owner;
address public Oracle;
bytes32 public jobId;
uint256 public fee;
//constructor is run at the time of contract creating
constructor() public {
setPublicChainlinkToken();
owner = msg.sender;
Oracle = 0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e;
jobId = "29fa9aa13bf1468788b7cc4a500a45b8";
fee = 0.1 * 10 ** 18; // 0.1 LINK
}
//function below creates a Chainlink API request to get a price
//only the owner of the contract can call this function
function requestPrice() public onlyOwner returns (bytes32 requestId)
{
//create a variable and store it temporarily in memory
Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
//set the url to perform the GET request
request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");
//set the path to find the requred data in the api response
request.add("path", "USD");
//multiply the results by 100 to remove decimals
request.addInt("times", 100);
//send the request
return sendChainlinkRequestTo(Oracle, request, fee);
}
function fulfill(bytes32 _requestId, uint256 _price) public recordChainlinkFulfillment(_requestId)
{
currentPrice = _price;
}
modifier onlyOwner() {
require(msg.sender ==owner);
_;
}
}
2- از Injected Web3 استفاده کنید.
3- قرارداد را اجرا کنید و قرارداد اجرا شده خود را در پایین ریمیکس خواهید دید.

4. قبل از اینکه بتوانید با قرارداد خود تعامل داشته باشید، باید قرارداد خود را با توکن های لینک تامین کنید. برای ارسال توکنها، آدرس قرارداد را کپی کنید و با استفاده از MetaMask، توکنهای پیوند را برای آن ارسال کنید.

5. هنگامی که قرارداد شما دارای توکن های لینک است، می توانید از توابع قیمت گذاری استفاده کنید و قیمت ETH را در محیط آزمایش بازیابی کنید. اگر سعی کنید از تابع requestPrice در زمانی که توکن های پیوند در قرارداد خود ندارید استفاده کنید، یک خطا را روی صفحه مشاهده خواهید کرد.


در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید