Search code examples
ethereumsolidity

What is Interface signature in solidity?


I'm going through the source code for the ERC-1155 token standard and I came across this block of code

bytes4 constant private INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7;
  bytes4 constant private INTERFACE_SIGNATURE_ERC1155 = 0xd9b67a26;

  function supportsInterface(bytes4 _interfaceID) override external view returns (bool) {
    if (_interfaceID == INTERFACE_SIGNATURE_ERC165 ||
        _interfaceID == INTERFACE_SIGNATURE_ERC1155) {
      return true;
    }
    return false;
  }

I don't quite understand what the benefit of this function is used for. Also, where do you get the INTERFACE_SIGNATURE constants from? Could someone please explain?


Solution

  • I believe there is a good explanation for this on openzeppelin docs.

    but just to give a short answer, suppose you sent ERC20 tokens to a contract that lacks the ability to transfer it so these tokens are forever locked in the contract. To avoid this kind of things, when you do a safetranser it will first check whether the receiver is capable of receiving it or not and in that case this function is called.

    As for INTERFACE_SIGNATURE you can give it a read here.