#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
}