Qu'est-ce que le «sélecteur» dans l'appel d'API ChainLink?

Nov 30 2020

J'utilise l'exemple de chainlink pour appeler une API; cependant, je ne suis pas sûr que ce soit le cas.

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

Je sais que cela appelle la fonction suivante

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

Mais que fait le sélecteur dans le code ci-dessus (this.fulfill.selecor)?

Réponses

1 PatrickCollins Nov 30 2020 at 18:47

que fait le sélecteur dans le code ci-dessus (this.fulfill.selecor)?

Dans votre buildChainlinkRequestfonction, il faut 3 arguments :

  • bytes32 _specId
  • address _callbackAddress
  • bytes4 _callbackFunctionSignature

Le bytes4 _callbackFunctionSignatureindique au nœud Chainlink la méthode à appeler lorsqu'il renvoie les données. Il est connu sous le nom de sélecteur de fonction et permet au nœud de spécifier exactement ce qu'il doit rappeler, dans votre cas, la fulfillfonction.

En outre, comment puis-je passer un argument à la fonction de réalisation? J'essaie de mettre à jour la variable de preuve de la carte de mes clients en utilisant ce que le chainlink appelle.