Contract-Invocation
在 Chainlink 上指定作業參數是如何工作的?
我正在嘗試了解 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 適配器的智能合約,則作業規範將覆蓋智能合約。