<h3>ERC721 相关接口</h3><p>ERC721 的主合约一共引用了 4 个接口合约:IERC721.sol, IERC721Receiver.sol, IERC721Metadata.sol,和间接引用的 ERC165 的 IERC165.sol。这一讲我们将逐个介绍这 4 个接口合约。</p><h4>IERC165 接口</h4><p>首先我们介绍一下 EIP165,他的目的是创建一个标准方法来发布和检测智能合约实现的接口。PeopleDAO 有个朋友错转了 4000w 枚 PEOPLE 到 Token 合约。试想一下,如果在转账的时候自动判断接收方合约是否实现了相应的接口,没实现的话就 revert 交易,很多错转 Token 的悲剧都不会发生。EIP165 就是干这个的,而 ERC165 就是 EIP165 的实现。</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7187100-b1d33155a6ba524c.jpeg" img-data="{"format":"jpeg","size":15146,"height":195,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>ERC721 主合约对 supportsInterface() 的实现如下:</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7187100-55a6a9596487b5d4.jpeg" img-data="{"format":"jpeg","size":19600,"height":172,"width":977}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>可以看到,ERC721 实现了 IERC721,IERC721Metadata 和 IERC165 的接口,查询的时候会返回 true;否则返回 false。</p><h4>IERC721</h4><p>IERC721 是 ERC721 的接口合约,里面包括 3 个 event 和 9 个 function: </p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7187100-8d438a4b8b98b42b.jpeg" img-data="{"format":"jpeg","size":68742,"height":540,"width":910}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><h4>IERC721Receiver </h4><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7187100-1176e5cb65fb63b8.jpeg" img-data="{"format":"jpeg","size":23102,"height":360,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p>IERC721Receiver 接口包含了一个函数 onERC721Received()。这个函数会在 safeTransferFrom() 中被调用,Token 的接收合约必须实现这个接口才能转账成功。</p><h4>IERC721Metadata </h4><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7187100-3989a52a820fdcf5.jpeg" img-data="{"format":"jpeg","size":29185,"height":343,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>IERC721Metadata 是 ERC721 的拓展接口,实现了 3 个查询 metadata 的常用函数:</p><p>1、name():返回 Token 名称;</p><p>2、symbol():返回 Token 代号;</p><p>3、tokenURI():通过 tokenId 查询 metadata 所在 url。</p><p>
</p><h3>总结</h3><p>本文是 ERC721 专题的第二讲,我们介绍了 ERC721 主合约调用的 4 个接口合约 IERC165,IERC721,IERC721Receiver 和 IERC721Metadata。</p>
Solidity极简入门 | 专题第二讲:相关接口
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1,摘要 【本文目标】通过本文学习,了解ERC定义及知名ERC协议标准,如ERC20以及ERC223、ERC621...
- 目录 [TOC] 1、ERC721的基础知识 1.1、什么是不可替代代币? NFT 是独一无二的,每个令牌都有独特...