Apa itu "selector" dalam panggilan ChainLink API?

Nov 30 2020

Saya menggunakan contoh dari chainlink untuk memanggil API; Namun, saya tidak yakin itu terjadi.

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

Saya tahu itu memanggil fungsi berikut

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

Tapi, apa yang dilakukan selector pada kode di atas (this.fulfill.selecor)?

Jawaban

1 PatrickCollins Nov 30 2020 at 18:47

apa yang dilakukan selector pada kode di atas (this.fulfill.selecor)?

Dalam buildChainlinkRequestfungsi Anda , dibutuhkan 3 argumen :

  • bytes32 _specId
  • address _callbackAddress
  • bytes4 _callbackFunctionSignature

The bytes4 _callbackFunctionSignaturememberitahu node chainlink apa metode untuk panggilan ketika mengembalikan data. Ini dikenal sebagai pemilih fungsi , dan memungkinkan node untuk menentukan dengan tepat apa yang perlu dipanggil kembali, dalam kasus Anda fulfillfungsinya.

Juga, bagaimana saya bisa meneruskan argumen ke fungsi pemenuhan? Saya mencoba memperbarui variabel bukti peta pelanggan saya dengan menggunakan panggilan chainlink.