اوراکل Chainlink در قرارداد هوشمند
اوراکل Chainlink در سالیدیتی
پلتفرم Chainlink از طریق ارائه یک API این امکان را برای توسعه دهندگان قرارداد هوشمند فراهم میکند تا قرارداد هوشمند را به تعدادی از شبکههای غیرمتمرکز اوراکل متصل کنند. اوراکلها در واقع در نقش تامینکننده اطلاعات و انواع دادههایی هستند که میتوان آنها را در قرارداد هوشمند به کار برد.
قراردادهای هوشمند نیازمند اطلاعاتی هستند که این اطلاعات باید قابل اعتماد و درست هم باشد. اوراکل علاوه بر تامین این اطلاعات، باید درستی آنها را بررسی کند. دسترسی قراردادهای هوشمند به اطلاعات و دادههای خارج از شبکه بلاک چین و دنیای واقعی توسط این اوراکلها تامین میشود و در دسترس قرار میگیرد.
نمونهای از این اوراکلها دادههای مربوط به وضعیت آب و هوا، قیمت سهام یا ارز، اطلاعات مربوط به حمل و نقل و بسیاری موارد دیگر است که میتوان قرارداد هوشمند را به آنها متصل کرد. در این مقاله قصد داریم نگاهی داشته باشیم به پیوند زنجیره ای اوراکل در قرارداد هوشمند یا Chainlink Oracle (What Is a Blockchain Oracle) و با هم نمونهای از استفاده از آن را در قرارداد هوشمند بررسی کنیم. با این مقاله در توکن خان همراه باشید.
قبل از مطالعه کامل مقاله “پیوند زنجیره ای اوراکل سالیدیتی” پیشنهاد میکنیم مقالات دیگر حوزه آموزش برنامه نویسی سالیدیتی را هم مطالعه کنید.
نحوه ایجاد توکن ERC721 با قرارداد هوشمند
انواع داده ها و متغیرها در سالیدیتی (solidity)
کتابخانه ها (Library) در قراردادهای هوشمند Solidity
گس فی GAS FEE در شبکه اتریوم چیست؟
استفاده از Import در سالیدیتی Solidity
انواع حافظه در قرارداد هوشمند سالیدیتی
Chainlink Oracle چیست؟
Chainlink یک شبکه غیرمتمرکز از گرهها است که دادهها و اطلاعات را از منابع خارج از بلاک چین برای استفاده در قراردادهای هوشمند داخل بلاک چین فراهم میکند. توکنهای لینک هم ارز دیجیتال این پلتفرم است که برای پرداخت هزینه خدمات در این شبکه استفاده میشود.
این پلتفرم توسط اوراکلهای امن، عملکرد بلاک چین را با اتصال قراردادهای هوشمند به دادههای دنیای واقعی، رویدادها، پرداختها و محاسبات خارج از زنجیره توسعه میدهد. Chainlink این کار را به روشی قابل اعتماد و بسیار مقاوم در برابر دستکاری انجام میدهد. این فرآیند، همراه با سختافزار ایمن فوقالعاده، مشکلات قابلیت اطمینان را که ممکن است در صورت استفاده از تنها یک منبع متمرکز رخ دهد، حذف میکند.
اوراکل در قرارداد هوشمند چگونه کار می کند؟
نحوه کار پلتفرم Chainlink به ترتیب زیر است:
- شرکتها، سازمانها و یا اشخاصی که دادههای قابل اعتماد را در اختیار دارند، آنها را در پلتفرم Chainlink به فروش رسانده و به این طریق درآمد کسب میکنند.
- اپراتورها توان پردازشی و زیرساختهای لازم را برای اتصال اوراکل با بلاک چین قرارداد هوشمند تامین میکنند، این اپراتورها یا نودها هم از طریق فراهم کردن این سرویس درآمد به دست میآورند.
- توسعهدهندگان قراردادهای هوشمند، این اطلاعات و دادههای اوراکل را در کد قرارداد هوشمند خود استفاده میکنند. زمانی که از اوراکلها استفاده میشود قرارداد توکن لینک دریافت میکند. توکن لینک، ارز دیجیتال این پروژه موفق اوراکل یعنی چین لینک است.
نمونه یک قرارداد با Chainlink Oracle
کدی که در ادامه مشاهده میکنید، یک قرارداد هوشمند است که در سالیدیتی نوشته شده است، در این قرارداد قیمت اتر از یک اوراکل قابل اعتماد دریافت میشود. با مطالعه نظرات موجود در این کد و همچنین امتحان کردن و دیپلوی آن در محیط ریمیکس، درک خواهید کرد که پیوند زنجیره ای اوراکل در قرارداد هوشمند دقیقا چیست و چگونه کار میکند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
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); _; } } |
از محیط Injected Web3 استفاده کرده و قرارداد را اجرا کنید. در پایان قرارداد خود را پس از اجرا در پائین ریمیکس خواهید دید.
برای ایجاد تعامل با قرارداد هوشمند خود باید ابتدا برای آن توکنهای لینک را ارسال کنید. برای این منظور، آدرس قرارداد خود را کپی و توسط کیف پول متامسک، توکنهای لینک را برای قرارداد ارسال کنید.
حال که قرارداد هوشمند شما توکنهای لینک را دریافت کرده است، میتوانید از توابع قیمتگذاری استفاده کرده و قیمت اتر را در ریمیکس بازیابی کنید. اگر از تابع requestPrice قبل از دریافت توکن لینک در قرارداد خود استفاده کنید با خطا مواجه خواهید شد.
جمع بندی
پیوند زنجیره ای اوراکل در قرارداد هوشمند یا Chainlink Oracle پلتفرمی است که اطلاعات و دادههای خارجی را برای استفاده قراردادهای هوشمند فراهم میکند. قرارداد هوشمند این دادهها را برای تشخیص برآورده شدن شروط در قرارداد نیاز دارد و از طرفی باید نسبت به قابل اعتماد بودن آنها هم اطمینان داشته باشد.
این پلتفرم که شبکهای غیرمتمرکز از نودها است، علاوه بر تامین این دادهها درستی آنها را بررسی میکند و در نهایت دادههای قابل اعتماد را در اختیار بلاک چین قرار میدهد. Chainlink از توکنهای لینک برای پرداخت هزینه خدمات در این شبکه استفاده میکند.
منابع معتبر مرتبط:
https://medium.com/0xcode/integrating-chainlink-oracles-with-smart-contracts
مطالب زیر را حتما مطالعه کنید
بررسی رفتار توابع View و Pure در سالیدیتی Solidity
توابع Payable در قراردادهای هوشمند Solidity
سالیدیتی Solidity چیست؟
سطح دسترسی Visibility در سالیدیتی Solidity
توابع Function در سالیدیتی Solidity
انواع حافظه در قرارداد هوشمند سالیدیتی
7 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
باعث افتخاره دوست عزیز
این مطلب حرف نداشت
خیلی محتوای کامل و عالی بود
مطلب بی نظیری بود
مطلب خوبی بود
مطلبتون بسیار مفید بود
شما پیج اینستا هم دارین؟