文章介绍了EIP-6093提案,该提案旨在为常见的Token类型(ERC-20、ERC-721和ERC-1155)定义一组标准化的错误消息,从而改善开发者和用户的体验,并降低gas成本。通过清晰的错误信息使用户更容易理解交易失败的原因,并为开发者提供更好的调试体验。
当 Solidity v0.8.4 引入了定义自定义错误的功能时,开发者们获得了一种更好的方式来处理回滚的交易。然而,目前还没有行业标准来定义最常见的错误消息,例如 InvalidSender 或 InsufficientBalance。标准化的错误允许用户在不同的应用或测试环境中获得更一致的体验,同时暴露相关的参数,并总体上减少在部署字节码中存储昂贵的回滚字符串的需求。
鉴于标准化错误消息对用户和开发者的价值,我们提交了 EIP-6093,其中提出了一系列标准错误,用于常见的 token 类型(ERC-20、ERC-721 和 ERC-1155)。
这个 EIP 旨在改善开发者体验,因为更清晰的错误消息使得捕获错误并将其呈现给用户变得更容易。对于最终用户来说,这也是一种改进,原因与上述相同 —— 除了自定义错误带来的 gas 节省之外,标准化的错误消息意味着用户可以知道期望什么以及如何解释他们看到的消息。基于这个提案的成功,未来版本的 OpenZeppelin Contracts 将采用自定义 Solidity 错误。
这个 EIP 的安全影响与错误的清晰度和 gas 预估有关。它还可以转化为更好的可读性、更少出错的 UI 和更情境化的开发者体验。
正如 Solidity v0.8.4 版本发布说明中所述,使用自定义错误可以降低运行时和部署成本。你可以在这里查看示例基准,比较了按照标准使用自定义错误抛出错误与使用传统回滚字符串的成本。gas 节省来自于回滚字符串存储在部署字节码中,而对于自定义错误,只存储错误的 4 字节选择器。

最终用户体验背后标准错误消息的主要好处可以通过以下截图之间的对比来说明。
这是用户在采用自定义错误消息之前看到的内容:

这不是很有效,如果用户不确定他们应该如何进行,这不能怪他们。但是,这不是钱包提供商的错。这种能力根本不存在。
标准的采用允许开发者更好地解释在常见的 ERC token 中可能失败的明确情况,例如余额不足或试图将 ERC-721 token 转移到无法接收它的地址。
这是一个用户在实施标准自定义错误消息后可能看到的内容的示例:

多年来,OpenZeppelin 一直通过 EIP 流程积极支持生态系统。我们很乐意收到社区关于 EIP-6093 的有用性和适用性的反馈,以便我们可以探索将此约定扩展到其他用例的方法,在这些用例中它可以为生态系统增加价值。
如果你是一名正在构建自己的 dapp、元宇宙、DeFi 协议或其他区块链项目的开发者,请务必查看我们的开源合约库,以安全地扩展你的 Web3 开发。
- 原文链接: openzeppelin.com/news/de...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!