سالیدیفا

اوراکل ها چین و چرا بهشون نیاز داریم؟

oracles

وقتی تو قراردادتون به اطلاعاتی خارج از بلاکچین نیاز دارین، یکی از بهترین راهکار ها استفاده از اوراکل هاست.

در واقع اوراکل ها ابزارین که دیتای خارج از بلاکچین رو وارد بلاکچین میکنن. مثل چی؟ مثب قیمت طلا، قیمت سهام، قیمت نفت و …

بسته به پروژه و نیازهاش، هم میشه یه اوراکل رو پیاده سازی کرد و همونو تو اسمارت کانترکت استفاده کرد، و هم میشه از اوراکل های آماده استفاده کرد.

بیشتر بخوانید: اوراکل ها چین و چرا بهشون نیاز داریم؟

اینجا به یه نمونه ارتباط با اوراکل اشاره می کنیم. (منبع کد)

import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";

contract OracleExample is usingOraclize {

    string public EURUSD;

    function updatePrice() public payable {
        if (oraclize_getPrice("URL") > this.balance) {
            //Handle out of funds error
        } else {
            oraclize_query("URL", "json(http://api.fixer.io/latest?symbols=USD).rates.USD");
        }
    }
    
    function __callback(bytes32 myid, string result) public {
        require(msg.sender == oraclize_cbAddress());
        EURUSD = result;
    }
}

توی کد بالا با استفاده از تابع updatePrice() درخواست رو به اوراکل میفرستیم.(خط 7) مشخصه که تابع رو از جنس payable در نظر گرفتیم چون برای ارسال درخواست باید مقداری اتر متناسب با هزینه های اوراکل مورد نظر ارسال کنیم. تو خط 8 با استفاده از شرط بررسی می کنیم که هزینه خدمات اوراکل بیشتر از موجودی کانترکت هست یا نه. اگر بیشتر بود باید خطا رو مدیریت کنیم و اگه نبود درخواست رو ارسال می کنیم. (خط 11)