随着 NFT 的繁荣,我们终于看到一些项目方对 ERC-721 提出了更新。对于一个 NFT 团队来说,技术大概率不是他们的长处,但还是让我们来看看他们对 ERC-721 有一些什么样的想法
各位开发过 NFT,并且用 ERC-721 标准进行开发的读者们用的是什么库呢?我们一般第一选择是 Openzeppelin 的库,但 Openzeppelin 的 tokenURI 规范和 Opensea 并不是非常的兼容。Openzeppelin 要求平台在访问元数据时,自动为 tokenURI 加上 .json
的后缀。然而 Opensea 并不遵守这个规范,隔壁 Rarible 倒是遵守了这个规范。因此我经常会这样魔改一下:
import "@openzeppelin/contracts/utils/Strings.sol";
string(abi.encodePacked(baseURI, tokenId.toString(), ".json"));
Azuki 推出了完全兼容 ERC-721 的 ERC-721A,并支持使用 NPM 进行安装,作为库导入到自己编写的合约里。目前在官方给出的清单中,有将近 40 个项目使用了 ERC-721A,例如 Cereal Club,X Rabbit Club,The Women of Crypto 等。除了单纯的 ERC721A,Azuki 还推出了两个变种,ERC721A Burnable 和 ERC721A Owners Expicit。如果你想要使用 ERC-721A 进行开发,需要注意的的是 ERC-721A 并没有类似 Openzeppelin 那样的完整 API 文档。
在 ERC-721A 中,Azuki 的改进有两点:
Azuki 还将 ERC-721A 和 ERC-721 Enumerable 的 Mint 手续费做了比较:
从数字上来看,基础 Mint 手续费降低了一倍,每多 Mint 一个,ERC-721A 只会增加些许的手续费。
为了达到这点 Azuki 在代码层面做了这几个主要改动:
根据项目自己的一些需求,Azuki 对通用库进行了一些修改,来实现在特定场景的手续费降低。例如第三条就牺牲了读取的性能。这里的大部分优化都存在 Tradeoff。
如果你喜欢本期内容,️欢迎点赞分享给你觉得有需要的人。
💻 Website: unblock256.com
✈️ Telegram: un.Block Weekly
🕊️ Twitter: @unBlock256
📧 Email:unblocketh@gmail.com
📤 分发渠道:知乎 | Notion | Substack | Medium | Mirror | RSS | 即刻 | 微信订阅
视觉设计:Jenny
特别鸣谢:
本文非商业目的转载授权遵循 CC BY-NC 4.0 协议
版权所有 ©️un.Block 2021