跳至主要内容
Change page

智能合約命名

頁面最後更新時間: 2025年9月9日

智能合約是以太坊去中心化基礎設施的基石,可實現自主應用程式和協議。 但即使合約功能不斷演進,使用者和開發者仍然依賴原始的十六進制地址來識別和引用這些合約。

使用 Ethereum 名稱服務 (ENS) (opens in a new tab) 為智能合約命名,可消除十六進制合約地址,改善使用者體驗,並降低地址投毒和欺騙攻擊等攻擊的風險。 本指南解釋了為智能合約命名的重要性、實施方法,以及可用於簡化流程並幫助開發者採用這種做法的工具,例如 Enscribe (opens in a new tab)

為何要為智能合約命名?

人類可讀的識別碼

開發者和使用者可以使用人類可讀的名稱,如 v2.myapp.eth,而不用與像 0x8f8e...f9e3 這樣不透明的合約地址互動。 這簡化了智能合約的互動。

這是透過 Ethereum 名稱服務 (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,這更有用。

部署時命名 vs. 部署後命名

智能合約可以在兩個時間點命名:

  • 部署時:在部署合約時為其分配一個 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) 進行一些手動步驟,或者使用 Enscribe (opens in a new tab)。 以下將概述這些方法。

手動設定 ENS

使用 ENS 應用程式 (opens in a new tab),開發者可以手動建立子名稱並設定正向地址記錄。 但是,他們無法透過 ENS 應用程式為名稱設定反向記錄,從而為智能合約設定主名稱。 必須採取手動步驟,這些步驟在 ENS 文件 (opens in a new tab) 中有詳細說明。

Enscribe

Enscribe (opens in a new tab) 簡化了使用 ENS 的智能合約命名,並增強了使用者對智能合約的信任。 它提供:

  • 原子化部署與命名:在部署新合約時分配一個 ENS 名稱
  • 部署後命名:將名稱附加到已部署的合約
  • 多鏈支援:在支援 ENS 的以太坊和 L2 網路上運作
  • 合約驗證資料:包含從多個來源提取的合約驗證資料,以增加使用者的信任度

如果使用者沒有 ENS 名稱,Enscribe 支援使用者提供的 ENS 名稱或其自己的網域。

您可以存取 Enscribe 應用程式 (opens in a new tab) 開始命名和查看智能合約。

最佳實踐

  • 使用清晰、有版本的名稱,例如 v1.myapp.eth,使合約升級透明化
  • 設定反向記錄,將合約連結到 ENS 名稱,以便在錢包和區塊鏈瀏覽器等應用程式中可見。
  • 密切監控到期時間,以防止所有權意外變更
  • 驗證合約來源,以便使用者可以信任命名的合約行為符合預期

風險

為智能合約命名為以太坊使用者帶來了顯著的好處,但是,ENS 網域的擁有者必須對其管理保持警惕。 值得注意的風險包括:

  • 到期:與 DNS 名稱一樣,ENS 名稱的註冊期限是有限的。 因此,擁有者必須監控其網域的到期日期,並在到期前及時續訂。 ENS 應用程式和 Enscribe 都會在網域即將到期時為網域擁有者提供視覺指示。
  • 所有權變更:ENS 記錄在以太坊上以 NFT 的形式表示,特定 .eth 網域的擁有者擁有相關的 NFT。 因此,如果不同的帳戶取得了這個 NFT 的所有權,新擁有者可以隨意修改任何 ENS 記錄。

為了減輕此類風險,.eth 第二層網域 (2LD) 的擁有者帳戶應透過多重簽名錢包進行保護,並建立子網域來管理合約命名。 這樣,萬一在子網域層級發生任何意外或惡意的所有權變更,2LD 擁有者可以覆蓋這些變更。

合約命名的未來

合約命名正成為去中心化應用程式開發的最佳實踐,就像網域名稱取代了網路上的 IP 地址一樣。 隨著錢包、瀏覽器和儀表板等更多基礎設施整合合約的 ENS 解析,命名的合約將提高整個生態系統的安全性並減少錯誤。

透過使智能合約更容易識別和理解,命名有助於彌合以太坊上使用者和應用程式之間的差距,從而提高使用者的安全性和使用者體驗。

延伸閱讀

這篇文章對你有幫助嗎?