Was ist "Selektor" im ChainLink-API-Aufruf?

Nov 30 2020

Ich verwende das Beispiel von chainlink, um eine API aufzurufen. Ich bin mir jedoch nicht sicher, ob dies der Fall ist.

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

Ich weiß, dass es die folgende Funktion aufruft

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

Aber was macht der Selektor im obigen Code (this.fulfill.selecor)?

Antworten

1 PatrickCollins Nov 30 2020 at 18:47

Was macht der Selektor im obigen Code (this.fulfill.selecor)?

In Ihrer buildChainlinkRequestFunktion sind 3 Argumente erforderlich :

  • bytes32 _specId
  • address _callbackAddress
  • bytes4 _callbackFunctionSignature

Das bytes4 _callbackFunctionSignatureteilt dem Chainlink-Knoten mit, welche Methode aufgerufen werden soll, wenn er die Daten zurückgibt. Es ist als Funktionsauswahl bekannt und ermöglicht es dem Knoten, genau anzugeben, was er zurückrufen muss, in Ihrem Fall die fulfillFunktion.

Wie kann ich der Fulfill-Funktion ein Argument übergeben? Ich versuche, die Proof-Variable meiner Kundenkarte mithilfe der Chainlink-Aufrufe zu aktualisieren.