Was ist "Selektor" im ChainLink-API-Aufruf?
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
Was macht der Selektor im obigen Code (this.fulfill.selecor)?
In Ihrer buildChainlinkRequest
Funktion sind 3 Argumente erforderlich :
bytes32 _specId
address _callbackAddress
bytes4 _callbackFunctionSignature
Das bytes4 _callbackFunctionSignature
teilt 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 fulfill
Funktion.
Wie kann ich der Fulfill-Funktion ein Argument übergeben? Ich versuche, die Proof-Variable meiner Kundenkarte mithilfe der Chainlink-Aufrufe zu aktualisieren.