¿Qué es "selector" en la llamada API ChainLink?
Estoy usando el ejemplo de chainlink para llamar a una API; sin embargo, no estoy seguro de que así sea.
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);
}
Sé que llama a la siguiente función
function fulfill(bytes32 _requestId, bool _isProofCorrect, unit val) public recordChainlinkFulfillment(_requestId){
customers[1].proof = _isProofCorrect;
}
Pero, ¿qué hace el selector en el código anterior (this.fulfill.selecor)?
Respuestas
¿Qué hace el selector en el código anterior (this.fulfill.selecor)?
En su buildChainlinkRequest
función, toma 3 argumentos :
bytes32 _specId
address _callbackAddress
bytes4 _callbackFunctionSignature
El bytes4 _callbackFunctionSignature
le dice al nodo Chainlink qué método llamar cuando devuelve los datos. Se lo conoce como selector de función y permite que el nodo especifique exactamente qué necesita llamar, en su caso, la fulfill
función.
Además, ¿cómo puedo pasar un argumento a la función de cumplimiento? Estoy tratando de actualizar la variable de prueba del mapa de mis clientes usando lo que Chainlink llama.