当前位置: 首页 > news >正文

为什么要用erc165识别erc721或erc1155

这个问题切中了以太坊合约标准的重要设计理念。

🌱 为什么要用 ERC165 来识别 ERC721 或 ERC1155?

因为:

➡ 在链上(智能合约之间)或前端(dapp)需要判断一个合约是否实现了某个接口标准。

比如:
• 你想调用一个 NFT 合约的 safeTransferFrom,但你先要确定它真的是 ERC721 或 ERC1155。
• 否则,你可能调用失败,或者合约根本不支持这个函数。

而 ERC165 就是为此而生的一个接口检测标准。

🚀 ERC165 是什么?

ERC165 定义了一个标准的 supportsInterface 函数:

function supportsInterface(bytes4 interfaceID) external view returns (bool);

•	任何合约只要实现 ERC165,就能回答:

“你是否支持某个接口 ID?”

接口 ID 就是根据接口函数签名哈希后 XOR 出来的一个 bytes4 值。

🔍 ERC721 和 ERC1155 为什么都用 ERC165?

因为:
• ERC721、ERC1155 都是基于 ERC165 来声明自己支持的接口。
• 比如:
• ERC721 的接口 ID 是 0x80ac58cd
• ERC1155 的接口 ID 是 0xd9b67a26
• 所以你只要调用:

IERC165(contract).supportsInterface(0x80ac58cd)

就可以知道该合约是否真的是 ERC721。

这样就避免了:
• 硬编码猜测:“看函数名好像是 ERC721 就直接调用。”
• 意外调用失败:合约可能只是巧合有同名函数。

✅ 典型场景
• 前端 dapp:在用户输入一个 NFT 合约地址后,先通过 supportsInterface 判断它是不是 ERC721 或 ERC1155,再决定用什么方式去展示和交互。
• 链上合约:比如一个 NFT 拍卖合约,收到一个 NFT 资产地址,要先确认它是 ERC721 才安全接收。

⛑️ 小结一句话

ERC165 是以太坊的“合约接口身份认证”,
用来安全地识别合约是否实现了 ERC721、ERC1155 等标准,
避免盲目调用导致失败或安全漏洞。

http://www.dtcms.com/a/282420.html

相关文章:

  • 系统性学习C语言-第十八讲-C语言内存函数
  • IIS-网站报500.19错误代码0x8007000d问题解决
  • LeetCode Hot100【4. 寻找两个正序数组的中位数】
  • 什么是 WebClient?
  • xss-labs的小练
  • 基于faster-r-cnn行人检测和ResNet50+FPN的可见光红外图像多模态算法融合创新
  • VIVADO技巧_BUFGMUX时序优化
  • 比特币技术简史 第二章:密码学基础 - 哈希函数、公钥密码学与数字签名
  • 基于阿里云云服务器-局域网组网软件
  • Mfc初始化顺序
  • 【27】MFC入门到精通——MFC 修改用户界面登录IP IP Address Control
  • 虚幻引擎5 GAS开发俯视角RPG游戏 #06-7:无限游戏效果
  • 【28】MFC入门到精通——MFC串口 Combobox 控件实现串口号
  • 技术演进中的开发沉思-36 MFC系列: 对话框
  • Java并发编程(一)
  • LeetCode Hot 100 二叉树的最大深度
  • .NET 10 Preview 4 已发布
  • 【C# in .NET】9. 探秘委托:函数抽象的底层机制
  • 设置第三方窗口置顶(SetWindowPos方法,vb.net)
  • WMS仓储管理系统智能调控提升电子企业库存周转率
  • 系统启动流程分析
  • Linux-RAID
  • QML 五大对话框组件
  • 端口被占用时的解决问题
  • Egg.js × NestJS 2025 Nodejs后端框架选型指南
  • 代码随想录算法训练营十七天|二叉树part07
  • 【android bluetooth 协议分析 03】【蓝牙扫描详解 2】【app触发蓝牙扫描后,协议栈都做了那些事情】
  • 跨平台 App 如何无痛迁移到鸿蒙系统?全流程实战+Demo 教程
  • 八股文——包装类
  • Android 升级targetSdk无法启动服务