美文网首页
Solidity极简入门 | 专题第二讲:相关接口

Solidity极简入门 | 专题第二讲:相关接口

作者: 小强的进阶之路 | 来源:发表于2023-08-01 00:02 被阅读0次

    <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://img.haomeiwen.com/i7187100/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://img.haomeiwen.com/i7187100/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://img.haomeiwen.com/i7187100/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://img.haomeiwen.com/i7187100/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://img.haomeiwen.com/i7187100/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极简入门 | 专题第二讲:相关接口

          本文链接:https://www.haomeiwen.com/subject/kwjypdtx.html