跳转至主要内容
Change page

为智能合约命名

页面最后更新: 2025年9月9日

智能合约是以太坊去中心化基础设施的基石,可实现自主应用程序和协议。 但即使合约功能不断发展,用户和开发者仍然依赖原始的十六进制地址来识别和引用这些合约。

使用以太坊域名服务 (ENS)opens in a new tab 为智能合约命名,可通过消除十六进制合约地址来改善用户体验,并降低地址中毒和欺骗攻击等攻击的风险。 本指南将解释为智能合约命名的重要性、实施方法,以及可用的工具(如 Enscribeopens in a new tab),以简化流程并帮助开发者采用这种做法。

为何要为智能合约命名?

人类可读的标识符

开发者和用户可以使用 v2.myapp.eth 等人类可读的名称,而不用与 0x8f8e...f9e3 等不透明的合约地址进行交互。 这简化了智能合约的交互。

这得益于以太坊域名服务opens in a new tab,该服务为以太坊地址提供去中心化的命名服务。 这类似于域名服务 (DNS) 让互联网用户能够使用 ethereum.org 等名称访问网络地址,而不是通过 104.18.176.152 等 IP 地址访问。

提高安全性和信任度

已命名的合约有助于减少向错误地址进行的意外交易。 它们还有助于用户识别与特定应用程序或品牌相关的合约。 这增加了一层声誉信任,尤其是当名称附加到像 uniswap.eth 这样知名的父域时。

由于以太坊地址的长度为 42 个字符,用户很难识别地址中的微小变化,即使用户只修改了几个字符。 例如,像钱包这样面向用户的应用程序通常会将 0x58068646C148E313CB414E85d2Fe89dDc3426870 这样的地址截断为 0x580...870。 用户不太可能注意到几个字符被更改的恶意地址。

地址欺骗和中毒攻击就采用了这种技术,诱使用户相信他们正在与正确的地址交互或向其发送资金,而实际上该地址只是与正确的地址相似,但并不相同。

用于钱包和合约的 ENS 名称可防范这些类型的攻击。 与 DNS 欺骗攻击一样,ENS 欺骗攻击也可能发生,但用户更有可能注意到 ENS 名称中的拼写错误,而不是十六进制地址中的微小修改。

为钱包和浏览器提供更好的用户体验

当智能合约配置了 ENS 名称后,钱包和区块链浏览器等应用程序就可以显示智能合约的 ENS 名称,而不是十六进制地址。 这为用户带来了显著的用户体验 (UX) 提升。

例如,当与 Uniswap 等应用程序交互时,用户通常会看到他们交互的应用程序托管在 uniswap.org 网站上,但如果 Uniswap 没有使用 ENS 为其智能合约命名,他们将看到一个十六进制的合约地址。 如果合约已命名,他们可以看到更有用的 v4.contracts.uniswap.eth

在部署时命名与部署后命名

有两种为智能合约命名的时间点:

  • 部署时:在部署合约时为其分配一个 ENS 名称。
  • 部署后:将现有的合约地址映射到一个新的 ENS 名称。

这两种方法都依赖于拥有 ENS 域的所有者或管理员访问权限,以便他们可以创建和设置 ENS 记录。

ENS 如何为合约命名

ENS 名称存储在链上,并通过 ENS 解析器解析为以太坊地址。 为智能合约命名:

  1. 注册或控制一个父 ENS 域(例如 myapp.eth
  2. 创建一个子域(例如 v1.myapp.eth
  3. 将子域的 address 记录设置为合约地址
  4. 将合约的反向记录设置为 ENS,以便通过其地址找到该名称

ENS 名称是分层的,支持无限的子名称。 设置这些记录通常需要与 ENS 注册表和公共解析器合约进行交互。

合约命名工具

有两种命名智能合约的方法。 一种是使用 ENS 应用程序opens in a new tab 并进行一些手动步骤,另一种是使用 Enscribeopens in a new tab。 下文将对此进行概述。

手动设置 ENS

使用 ENS 应用程序opens in a new tab,开发者可以手动创建子名称并设置正向地址记录。 但是,他们不能通过 ENS 应用程序为名称设置反向记录来为智能合约设置主名称。 必须采取手动步骤,相关内容在 ENS 文档opens in a new tab 中有介绍。

Enscribe

Enscribeopens in a new tab 简化了使用 ENS 的智能合约命名,并增强了用户对智能合约的信任。 它提供:

  • 原子化部署和命名:在部署新合约时分配 ENS 名称
  • 部署后命名:将名称附加到已部署的合约上
  • 多链支持:适用于支持 ENS 的以太坊和 L2 网络
  • 合约验证数据:包含从多个来源获取的合约验证数据,以增加用户的信任度

Enscribe 支持用户提供的 ENS 名称,如果用户没有 ENS 名称,也支持其自己的域名。

您可以访问 Enscribe Appopens in a new tab 来开始命名和查看智能合约。

最佳实践

  • 使用清晰的版本化名称,例如 v1.myapp.eth,使合约升级透明化
  • 设置反向记录以将合约链接到 ENS 名称,以便在钱包和区块链浏览器等应用程序中可见。
  • 如果您想防止所有权意外变更,请密切监控到期时间
  • 验证合约来源,以便用户可以相信已命名的合约会按预期运行

风险

为智能合约命名可为以太坊用户带来巨大好处,但是,ENS 域的所有者必须对其管理保持警惕。 值得注意的风险包括:

  • 到期:与 DNS 名称一样,ENS 名称注册的期限也是有限的。 因此,所有者必须监控其域的到期日期,并在到期前及时续订。 ENS 应用程序和 Enscribe 都会在即将到期时为域名所有者提供视觉指示。
  • 所有权变更:ENS 记录在以太坊上表示为 NFT,特定 .eth 域的所有者拥有相关的 NFT。 因此,如果一个不同的帐户获得了该 NFT 的所有权,新所有者可以根据自己的需要修改任何 ENS 记录。

为降低此类风险,.eth 二级域名 (2LD) 的所有者帐户应通过多签钱包来确保安全,并创建子域来管理合约命名。 这样,万一在子域级别发生任何意外或恶意的所有权变更,2LD 所有者可以将其覆盖。

合约命名的未来

合约命名正在成为去中心化应用程序开发的最佳实践,类似于域名在网络上取代 IP 地址的方式。 随着钱包、浏览器和仪表板等更多基础设施集成了合约的 ENS 解析,已命名的合约将提高整个生态系统的安全性并减少错误。

通过使智能合约更易于识别和理解,命名有助于弥合以太坊上用户与应用程序之间的差距,从而提高用户的安全性和用户体验。

扩展阅读{#further-reading}

本文对你有帮助吗?