Co to jest „selektor” w wywołaniu ChainLink API?

Nov 30 2020

Używam przykładu z chainlink, aby wywołać API; jednak nie jestem pewien, czy tak.

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

Wiem, że wywołuje następującą funkcję

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

Ale co robi selector w powyższym kodzie (this.fulfill.selecor)?

Odpowiedzi

1 PatrickCollins Nov 30 2020 at 18:47

co robi selector w powyższym kodzie (this.fulfill.selecor)?

W twojej buildChainlinkRequestfunkcji przyjmuje 3 argumenty :

  • bytes32 _specId
  • address _callbackAddress
  • bytes4 _callbackFunctionSignature

bytes4 _callbackFunctionSignatureMówi węzeł Chainlink jaka metoda do wywołania kiedy zwraca dane. Jest znany jako selektor funkcji i pozwala węzłowi określić dokładnie to, co ma wywołać, w twoim przypadku fulfillfunkcję.

Ponadto, jak mogę przekazać argument do funkcji fill? Próbuję zaktualizować zmienną dowód mapy moich klientów za pomocą wywołań chainlink.