Erc165
- 1 min智能合约如何通过实现接口来发布其实现的接口?
智能合约通过实现接口来发布其实现的接口的过程如下:
- 在智能合约中,需要导入要实现的接口,例如
IERC165
。 - 使用
is
关键字在智能合约声明中实现导入的接口,例如IERC165
。 - 重写
supportsInterface
函数,在该函数中返回一个布尔值,检查参数interfaceId
是否与已实现的接口之一相同。 - 调用
super.supportsInterface()
,该函数会调用ERC165中的代码,检查提供的interfaceId
是否为IERC165。 - 当调用
supportsInterface
函数并传入一个interfaceId
时,如果该interfaceId
已实现,则智能合约函数会返回true
,否则返回false
。 - 在实现的智能合约中,可以通过调用
supportsInterface
函数来查询智能合约实现的接口。
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}