Как получить медианные данные из 2 Url

#blockchain #ethereum #smartcontracts #chainlink

Вопрос:

В приведенном ниже коде у меня есть 2 URL-адреса, и каждый URL-адрес имеет путь

   These are 2 urls 
    api[0] = "https://www.bitstamp.net/api/v2/ticker/ethusd/";
    api[1] = "https://api.pro.coinbase.com/products/eth-usd/ticker";

  The path for URL 0 is last and the path for URL 1 is price
 

Я хочу, чтобы узлы цепной связи получали данные(последние и цену) из этих 2 URL-адресов и вычисляли медиану данных из 2 URL
-адресов, т. е. медиана = {последняя цена)/2;
Как написать код для этой логики в Chainlink

Ответ №1:

Во-первых, вы хотели бы сделать 2 вызова API, следующих вместе с документами цепочки. https://docs.chain.link/docs/make-a-http-get-request/

Что-то вроде:

 function makeAPICall() public returns (bytes32 requestId) 
    {
        Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
        request.add("get", "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETHamp;tsyms=USD");
        int timesAmount = 10**18;
        request.addInt("times", timesAmount);
        return sendChainlinkRequestTo(oracle, request, fee);
    }
 

Затем в вашей функции выполнения вы бы взяли медианы списка.

 function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId)
    {
        answers.push(_volume);
        // loop through list and take median
    }