跳转到主要内容
Change page

命名智能合约

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

使用 以太坊域名服务 (ENS) (在新标签页中打开) 命名智能合约,通过消除十六进制合约地址来改善用户体验,并降低地址投毒和欺骗攻击等风险。本指南解释了为什么命名智能合约很重要、如何实现它,以及可用的工具(如 Enscribe (在新标签页中打开))来简化该过程并帮助开发者采用这种做法。

为什么要命名智能合约?

人类可读的标识符

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

这是通过 以太坊域名服务 (在新标签页中打开) 实现的,该服务为以太坊地址提供去中心化的命名服务。这类似于域名系统 (DNS) 使互联网用户能够使用诸如 ethereum.org 之类的名称而不是通过诸如 104.18.176.152 之类的 IP 地址来访问网络地址。

提高安全性和信任度

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

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

这种技术被用于地址欺骗和投毒攻击,用户被误导以为他们正在与正确的地址交互或向其发送资金,而实际上该地址只是看起来像正确的地址,但并不相同。

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

改善钱包和浏览器的用户体验

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

例如,在与尤尼斯瓦普等应用交互时,用户通常会看到他们正在交互的应用托管在网站 uniswap.org 上,但如果尤尼斯瓦普没有使用 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 应用 (在新标签页中打开) 并执行一些手动步骤,要么使用 Enscribe (在新标签页中打开)。下面将概述这些方法。

手动设置 ENS

使用 ENS 应用 (在新标签页中打开),开发者可以手动创建子名称并设置正向地址记录。但是,他们无法通过 ENS 应用设置名称的反向记录来为智能合约设置主名称。必须采取手动步骤,这些步骤在 ENS 文档 (在新标签页中打开) 中有介绍。

Enscribe

Enscribe (在新标签页中打开) 简化了使用 ENS 命名智能合约的过程,并增强了用户对智能合约的信任。它提供:

  • 原子化部署和命名:在部署新合约时分配 ENS 名称
  • 部署后命名:为已部署的合约附加名称
  • 多链支持:在支持 ENS 的以太坊和二层网络 (l2) 上运行
  • 合约验证数据:包含从多个来源提取的合约验证数据,以增加用户的信任度

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

你可以访问 Enscribe 应用 (在新标签页中打开) 开始命名和查看智能合约。

最佳实践

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

风险

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

  • 到期:就像 DNS 名称一样,ENS 名称的注册是有期限的。因此,所有者监控其域名的到期日期并在到期前尽早续费至关重要。当即将到期时,ENS 应用和 Enscribe 都会为域名所有者提供视觉提示。
  • 所有权变更:ENS 记录在以太坊上表示为 NFT,特定 .eth 域名的所有者拥有相关的 NFT。因此,如果另一个账户获得了该 NFT 的所有权,新所有者就可以随意修改任何 ENS 记录。

为了降低此类风险,.eth 二级域名 (2LD) 的所有者账户应通过多重签名钱包进行保护,并创建子域名来管理合约命名。这样,如果子域名级别发生任何意外或恶意的所有权变更,2LD 所有者都可以覆盖它们。

合约命名的未来

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

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

延伸阅读