Contract-Invocation

在 Chainlink 上指定作業參數是如何工作的?

  • May 5, 2020

我正在嘗試了解 Chainlink,但我正在碰壁。我找到了本教程,它解釋瞭如何使用 JSON 創建作業規範。

教程說明你可以自己指定 url、path 和乘法值,而Chainlink 官方文件將這些放在 JSON 中,並且不需要將這些添加到智能合約程式碼中。

Chainlink 如何決定將哪個參數放置在哪裡?如果您有多個帶有參數的 HTTPGet 任務怎麼辦?

例如,如果您使用的是httpget 適配器,您可以將其放置在 JSON 作業規範中,或者您可以將其添加到您的智能合約程式碼中。

以下是使用該req.add功能的智能合約範例:

// Creates a Chainlink request with the bytes32 job and returns the requestId
function requestEthereumLastMarket(bytes32 _jobId) public returns (bytes32 requestId) {
 // newRequest takes a JobID, a callback address, and callback function as input
 Chainlink.Request memory req = buildChainlinkRequest(_jobId, address(this), this.fulfillEthereumLastMarket.selector);
 // Adds a URL with the key "get" to the request parameters
 req.add("get", "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD");
 // Adds a dot-delimited JSON path with the key "path" to the request parameters
 req.add("path", "RAW.ETH.USD.LASTMARKET");
 // Sends the request with 1 LINK to the oracle contract
 requestId = sendChainlinkRequest(req, 1 * LINK);
}

req.add 基本上將這些參數添加到該作業實例的 json 規範中。如果您同時擁有 json 作業規範和定義 http.get 適配器的智能合約,則作業規範將覆蓋智能合約。

引用自:https://ethereum.stackexchange.com/questions/77975