根据合约地点判断合约协议的方法

[复制链接]
发表于 2024-12-3 03:06:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
判断合约协议之前,需要相识一下什么是ERC165协议:
ERC165 是以太坊中用于尺度化接口检测的协议,由 Fabian Vogelsteller 在 2018 年创建 ,其核心内容主要包括以下方面:
接口定义




  • 单一函数接口:ERC165 协议规定了一个核心函数 supportsInterface(bytes4 interfaceID),此函数用于查询合约是否实现了特定的接口。其中,interfaceID 是一个 bytes4 类型的标识符,通过特定的哈希盘算方法得出,用于唯一标识一个接口。
  • 接口标识符盘算:接口标识符 interfaceID 是对接口内全部函数的函数选择器进行异或(XOR)操作盘算得出的。函数选择器是函数署名的 Keccak-256 哈希值的前 4 个字节。例如,对于一个简朴的接口定义 interface IMyInterface { function myFunction() external returns (bool); },先盘算 myFunction() 的函数选择器,再得出该接口的标识符。
实现要求



  • 返回值要求:在合约中实现 supportsInterface 函数时,当合约确实实现了传入的 interfaceID 所对应的接口,必须返回 true;否则返回 false。这使得外部调用者可以通过该函数快速判断合约是否具备所需的功能接口。
  • 兼容性要求:如果一个合约实现了 ERC165 协议,那么它对于自身实现的全部接口,都应该能够通过 supportsInterface 函数正确地反馈其实现情况,无论是尺度接口还是自定义接口,均需遵照此要求,以确保与其他合约的兼容性和互操作性。
应用场景



  • 多接口检测:在复杂的智能合约体系中,一个合约大概实现了多个不同的接口,如同时实现了 ERC20、ERC721 以及一些自定义接口。ERC165 协议允许外部合约或应用通过调用 supportsInterface 函数,方便快捷地检测该合约是否实现了特定接口,从而确定是否可以进行相应的交互操作。
  • 合约升级与扩展:当合约需要升级或扩展功能时,新的合约版本大概会增长或修改实现的接口。通过遵照 ERC165 协议,无论是原有的还是新加入的接口,都可以通过 supportsInterface 函数清楚地展示给外部,确保其他与之交互的合约或应用能够及时相识其功能变化,而不会因接口的改变导致交互失败。
以下是一些常见合约的接口标识符:
ERC 尺度类



  • ERC20:接口标识符是0x36372b07。ERC20 是以太坊上最常用的通证尺度之一,定义了一套通用的规则,使得不同的数字货币在以太坊生态体系中能够相互兼容和交互。符合 ERC20 尺度的通证通常具著名称、符号、小数位数等属性,以及转账、批准等功能。
  • ERC721:接口标识符为0x80ac58cd 。ERC721 是用于体现非同质化通证(NFT)的尺度,每个 NFT 都具有唯一的标识符,不可相互替代,常用于数字艺术、游戏道具等领域,代表独一无二的资产。
  • ERC1155:接口标识符是0xd9b67a26。ERC1155 是一种多代币尺度,它既可以体现同质化通证,也可以体现非同质化通证,能在同一个合约中高效地处理多种不同类型的通证,节省了开发成本和 gas 费用。
  • ERC4626:接口标识符是0x50585038。ERC4626 是以太坊上的一个尺度化的通证化金库接口,主要用于创建具有特定功能的通证化金库合约,使开发者能够更方便地构建和管理各种基于通证的金融产品和服务,如收益聚合器、活动性挖矿等。
其他类



  • IERC165:接口标识符是0x01ffc9a7。IERC165 是用于检测合约是否实现了某个接口的尺度接口,规定了supportsInterface函数的署名和举动,使得合约之间能够方便地进行接口兼容性查抄。
  • IERC777:接口标识符是0x89afcb44。IERC777 在 ERC20 的根本上进行了改进,提供了更丰富的功能和更好的用户体验,如操作员模式、发送和吸收钩子等,使得通证的操作更加机动和安全
  • IERC1820Registry:接口标识符是0x1820a4b7。IERC1820Registry 是一个用于注册和查询接口实现者的合约接口,主要用于解决合约之间的接口发现和交互问题,使得不同的合约能够更方便地找到和利用对方提供的服务和功能。
这回各人知道了嘛,只需要call一下合约supportsInterface方法,传入接口标识符,看返回是true还是false就知道啦~~
下面这个就是传入erc115协议的标识符,查询效果是 true


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-12 23:20 , Processed in 0.082825 second(s), 29 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表