O que é “seletor” na chamada da API ChainLink?

Nov 30 2020

Estou usando o exemplo do elo da cadeia para chamar uma API; no entanto, não tenho certeza disso.

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);
}

Eu sei que chama a seguinte função

 function fulfill(bytes32 _requestId, bool _isProofCorrect, unit val) public recordChainlinkFulfillment(_requestId){
        customers[1].proof = _isProofCorrect;
 }

Mas, o que o seletor faz no código acima (this.fulfill.selecor)?

Respostas

1 PatrickCollins Nov 30 2020 at 18:47

o que o seletor faz no código acima (this.fulfill.selecor)?

Em sua buildChainlinkRequestfunção, leva 3 argumentos :

  • bytes32 _specId
  • address _callbackAddress
  • bytes4 _callbackFunctionSignature

O bytes4 _callbackFunctionSignaturediz ao nó Chainlink qual método chamar quando retornar os dados. É conhecido como seletor de função e permite que o nó especifique exatamente o que precisa chamar de volta, no seu caso a fulfillfunção.

Além disso, como posso passar um argumento para a função cumprir? Estou tentando atualizar a variável de prova do mapa de meus clientes usando chamadas de elo de cadeia.