Что такое «селектор» в вызове API ChainLink?
Nov 30 2020
Я использую пример из chainlink для вызова API; однако я не уверен, что это так.
function checkProof(string memory JobLocation, int job_id) public {
Chainlink.Request memory req = buildChainlinkRequest(stringToBytes32(JOBID), address(this), this.fulfill.selector);
req.add("get",JobLocation);
req.add("path", "proof");
sendChainlinkRequestTo(ORACLE_ADDRESS, req, ORACLE_PAYMENT);
}
Я знаю, что он вызывает следующую функцию
function fulfill(bytes32 _requestId, bool _isProofCorrect, unit val) public recordChainlinkFulfillment(_requestId){
customers[1].proof = _isProofCorrect;
}
Но что делает селектор в приведенном выше коде (this.fulfill.selecor)?
Ответы
1 PatrickCollins Nov 30 2020 at 18:47
что делает селектор в приведенном выше коде (this.fulfill.selecor)?
В вашей buildChainlinkRequestфункции требуется 3 аргумента :
bytes32 _specIdaddress _callbackAddressbytes4 _callbackFunctionSignature
Он bytes4 _callbackFunctionSignatureсообщает узлу Chainlink, какой метод вызывать, когда он возвращает данные. Он известен как селектор функций и позволяет узлу точно указать, что ему нужно вызвать, в вашем случае - fulfillфункцию.
Кроме того, как передать аргумент функции выполнения? Я пытаюсь обновить переменную доказательства моей карты клиентов, используя то, что вызывает цепочка.