To get interface id, use
type(ITest).interfaceId
Remember interfaceId = xor of all selectors (methods) name and param type, don't care to return type
For example:
- Return zero with empty interface
=> bytes4: 0x00000000// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface ITest {
}contract Test is ITest {
bytes4 public constant IID_ITEST = type(ITest).interfaceId;
}
- Return same id with difference return type
=> bytes4: 0x0ee2cb10// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface ITest {
function getCreator() external;
}contract Test is ITest {
bytes4 public constant IID_ITEST = type(ITest).interfaceId;
function getCreator() external override { }
}===========
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface ITest {
function getCreator() external returns (uint);
}contract Test is ITest {
bytes4 public constant IID_ITEST = type(ITest).interfaceId;
function getCreator() external pure override returns (uint) {…