ERC-721A:Azuki 如何优化批量铸造和 Gas 效率

LeeMaimaiLeeMaimai
/2025年10月16日
ERC-721A:Azuki 如何优化批量铸造和 Gas 效率

要点总结

• ERC-721A通过连续代币ID和紧凑的所有权数据减少Gas费用。

• 批量铸造的成本接近单个代币铸造的成本,显著提高了Gas效率。

• ERC-721A兼容ERC-721接口,确保钱包和市场的正常使用。

• 2025年仍然重要,尤其是在主网铸造需求高涨时。

• 开发者需遵循安全指南,以确保ERC-721A的安全使用。

2021-2022 年的 NFT 繁荣暴露了一个令创作者和收藏家都感到痛苦的事实:铸造大量 ERC-721 代币的成本非常高昂。根据最初的标准铸造的每一个代币都需要重复的存储写入和每个代币的事件触发,这在热门的代币发行时会使 Gas 费用飙升。Azuki 的团队(Chiru Labs)通过 ERC-721A 解决了这个问题。ERC-721A 是一种可直接替换的实现方案,旨在显著降低批量铸造的成本,同时保持 ERC-721 的兼容性。下面将详细介绍其工作原理、改变之处以及如何在 2025 年安全地使用它。

基准:ERC-721 的单代币成本

最初的非同质化代币(NFT)规范 ERC-721 定义了 NFT 的接口和事件,但 Gas 经济性留给了具体的实现。一个标准的实现通常会:

  • 为每个代币的所有权执行一次存储写入。
  • 为每个铸造的代币触发一个 Transfer 事件。
  • 单独更新余额。

由于存储写入(SSTORE)是 EVM 操作中最昂贵的操作之一,批量铸造几十甚至几百个代币会使费用成倍增加。您可以通过 evm.codes 上的操作码参考 来验证 EVM 操作和存储写入的相对成本,这清楚地表明了为什么简单的 ERC-721 铸造成本高昂。关于规范本身,请参阅 ERC-721 标准

ERC-721A 概览

Chiru Labs 的 ERC-721A 是一个合约实现,它保留了 ERC-721 的接口,但重新设计了数据布局和铸造逻辑,使得批量铸造的成本接近于铸造单个代币的成本。官方代码和文档位于 Chiru Labs 的 GitHub 仓库 ERC721A

核心要点:

  • 连续的代币 ID:代币以连续的 ID 进行铸造。这种结构使得在不为每个代币存储所有权信息的情况下,可以推断出一系列代币的所有权。
  • 紧凑的所有权数据:ERC-721A 不使用多个映射,而是将字段(所有者地址、时间戳、销毁标志、额外数据)打包到一个紧凑的存储槽中。这减少了 SSTORE 操作,并提高了缓存局部性;有关打包的背景信息,请参阅 Solidity 存储布局说明
  • 惰性初始化:在批量铸造期间,实现只在范围的开头写入一次所有权信息;后续的代币会推断所有权,直到所有权发生变化,从而极大地减少了存储写入。
  • 保持兼容性的事件:ERC-721A 在常规铸造时为每个代币触发标准的 Transfer 事件,以保持与市场的兼容性。对于合约创建时的大规模铸造,它可以根据标准ERC-2309 使用 ConsecutiveTransfer 事件来进一步降低事件的 Gas 成本。

实际上,使用 ERC-721A 在单个交易中铸造 N 个代币,其成本仅比铸造一个代币略高,而不是 N 倍。这就是其 Gas 效率的精髓。

保持不变与改变之处

保持不变

  • 它实现了与 ERC-721 相同的外部接口,因此钱包、市场和索引器将继续正常工作。
  • 安全铸造流程、授权和转账行为与标准下的预期一致 OpenZeppelin 的 ERC-721 参考

内部改变

  • 所有权查找:查找所有权时,可能需要向后扫描到最近已初始化的所有权槽(在典型使用中,摊销为常数时间)。
  • “范围边界”附近的转账:转账操作可能会初始化下一个代币的所有权,以确保推断的准确性。
  • 数据结构:使用了激进的位打包(bit packing),并在某些地方使用了 unchecked 算术来节省 Gas。开发者如果要扩展 ERC-721A,应理解 Solidity 的 unchecked 块和不变量,以避免溢出或下溢 Solidity 中的 unchecked

为何在 2025 年仍然重要

以太坊在 2024 年的 Dencun 升级引入了 Blob 空间(EIP-4844),极大地降低了 Rollup 上的数据可用性成本,从而减少了 L2 上的费用。因此,许多 NFT 项目现在都在 L2 上铸造,然后进行跨链桥接或后续结算。即便如此,当需求激增或在主网上铸造仍因其出处(provenance)而受欢迎时,Gas 效率仍然很重要。ERC-721A之所以仍然有意义,是因为它无论您部署在哪条链上,都能降低链上组件的成本。有关 Dencun 及其影响的背景信息,请参阅以太坊基金会的概述 Dencun 主网

ERC-721A 与其他方案的比较

  • ERC-1155:如果您的收藏是半同质化的(每个 ID 有多个副本)或者您依赖真正的批量转账,ERC-1155 可能是更好的选择,因为它原生支持具有不同接口的批量操作 ERC-1155。对于具有代币级元数据和成熟市场流程的经典 1/1 NFT,ERC-721A 在优化 Gas 的同时保留了 ERC-721 的表面接口。
  • 版税:ERC-721A 可以通过 EIP-2981 整合链上版税信号,而不会影响其铸造优化 EIP-2981
  • 链下白名单和签名:将 ERC-721A 与 EIP-712 签名的凭证式铸造或 Merkle 证明相结合,可以使您的首次销售保持高效和灵活 EIP-712

开发者清单:安全地使用 ERC-721A 进行构建

  • 使用 Chiru Labs 最新的审计版本,并在上线生产环境前阅读仓库的安全说明 ERC721A on GitHub
  • 保持代币 ID 的连续性以最大化 Gas 节省;避免自定义 ID 方案,这会破坏连续所有权的推断。
  • 如果您必须在合约创建时进行大规模铸造,请考虑 ERC-2309 ConsecutiveTransfer 选项,并验证您的索引器堆栈是否理解它 ERC-2309
  • 在向打包的所有权结构添加自定义存储时要小心;错位或过宽的类型可能会抵消节省的 Gas。请查阅 Solidity 的存储打包规则 Solidity 存储布局
  • 测试边界条件:范围边缘附近的转账和销毁、枚举扩展以及与依赖代币枚举的市场进行的交互。
  • 在目标网络上,使用实际的批量大小进行性能分析。Dencun 升级后,Gas 经济性在主网和 L2 之间存在差异,因此请在启用元数据钩子的情况下,对铸造和转账流程进行基准测试。

对于收藏家和铸造者:您会注意到什么

  • 更低的首次铸造 Gas 费:一次交易批量铸造多个 NFT,比逐个铸造便宜得多。
  • 高负载下更快的发行:较少的重度存储写入意味着在交易池拥挤时,铸造失败的可能性更小。
  • 标准的钱包用户体验:由于 ERC-721A 保留了 ERC-721 接口,您的钱包、市场列表和索引器将继续正确识别代币。

常见陷阱和误区

  • “这是一个新标准。” 并非完全如此。ERC-721A 是 ERC-721 的一个实现,其内部布局经过重新设计;它并没有改变公开接口 ERC-721
  • “事件被压缩,所以索引器会出错。” 常规批量铸造仍然会触发每个代币的 Transfer 事件。只有可选的 ERC-2309 路径才会压缩事件,并且它主要用于合约创建时的铸造 ERC-2309
  • “代币枚举是免费的。” 并非如此。代币枚举(所有代币或按所有者枚举所有代币)被故意排除在核心之外以节省 Gas;如果您需要此功能,请添加可查询的扩展并考虑链下索引。

展望未来

随着 Blob 空间降低 L2 费用以及 NFT 基础设施的成熟,创作者现在可以根据每次发行的需求,在主网出处和 L2 可扩展性之间做出选择。ERC-721A 仍然是高需求的 PFP、具有白名单批量铸造的生成艺术系列以及希望获得 ERC-721 兼容性但又不想承担其批量成本的游戏资产的实用默认选择。如果您超出了 ERC-721 的语义范畴,请考虑您的用例是否自然地适合 ERC-1155 的多代币模型 ERC-1155

安全的密钥管理依然重要

更低的 Gas 费用并不能改变最重要的规则:保护您的密钥。ERC-721A 铸造通常涉及签署 EIP-712 消息或在热门发行期间快速执行高价值交易。支持安全离线签名、多链网络和清晰交易预览的硬件钱包可以帮助您自信地进行铸造。OneKey 硬件钱包是开源的,集成了主要的 Web3 工具,并提供直接的 EVM 和 EIP-712 签名工作流程——这在您高效批量铸造但仍希望最大限度地降低签名风险时非常有用。

快速资源

ERC-721A 并没有改变 NFT 是什么——它改变了我们创建它们的方式的效率。在一个区块空间稀缺、注意力短暂的世界里,这是一次有意义的升级。

使用 OneKey 保护您的加密之旅

View details for 选购 OneKey选购 OneKey

选购 OneKey

全球最先进的硬件钱包。

View details for 下载应用程序下载应用程序

下载应用程序

诈骗预警。支持所有币种。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

即刻咨询,扫除疑虑。

继续阅读