# Ethereum Name Service (ENS) 介紹與註冊教學

By [Cara Wang](https://paragraph.com/@carawang-2) · 2022-04-08

---

這篇文章主要會介紹 ENS 是什麼、如何幫你的地址綁定到 ENS 上

目前 ENS 提供的綁定方式有以下兩種：

1.  購買想要的 ENS 名稱、綁定到地址上
    
2.  使用既有的 DNS 綁定持有的網址到地址上
    

這篇文章僅先針對 ENS 介紹、第一種綁定方式做介紹，並提供實際綁定過程的步驟記錄。利用既有 DNS 去進行綁定的流程將於下一篇文章中說明。另外，我也將針對 ENS 的架構與智能合約做分析，預期也會是獨立的一篇文章。

網路世界的域名系統 DNS
-------------

在網路世界中，每個連接到網路上的接口其實是透過 IP 地址來進行通訊，IP 地址是一組由像是 `127.0.0.1` 的數字編號所組合而成，這樣的數字其實很難被人腦記憶或辨識。因此，DNS (Domain Name Service) 這樣的服務，便是幫大家把 IP 地址對應成人類熟悉的語言名稱，也就是大家每天都在使用的網址服務。

因為有了 DNS 這樣全球式的服務，讓我們在訪問網站時，不必記憶、輸入那些難以判別的 IP 地址，而是可以輸入像是 google.com 這樣簡單、好記得網址。

有關 DNS 的說明，可以參考下方文章的介紹:

[https://aws.amazon.com/tw/route53/what-is-dns/](https://aws.amazon.com/tw/route53/what-is-dns/)

以太坊區塊鏈的 ENS
-----------

以太坊區塊鏈中，同樣有一組讓人難以記憶的地址，也就是大家的錢包地址，像是 `0x71A15b42Cb572143d4Fd1e0B92B75540599186EE` 這樣的一組地址，若你能夠稍微記住開頭與結尾就已經很不錯了，但當你要轉帳時，通常就只能靠著複製、貼上或者是掃 QR Code 的方式來避免填錯。若要你檢查整串地址是否有填錯，其實也只能稍微檢查開頭跟結尾是否一致，很難一個字一個字的去做比對。因此，也就出現了 ENS (Ethereum Name Service) 這樣的服務來幫助大家利用人類比較能夠記憶的語言來對應到難記得錢包地址。

但其實，目前一般的錢包服務，像是 MetaMask、中心化交易所的錢包，都會讓大家可以維護自己的地址聯絡簿，讓大家可以自行紀錄、對照每個地址是指向你的哪位親朋好友，或是你可以維護自己的多個地址、記錄每個錢包各自的用途為何。若你有經常使用的錢包服務的話，會遇到需要重新輸入地址的機會是少之又少，此時 ENS 的好處，似乎就沒有這麼的明顯了。也因此，筆者認為，其實在一般的使用情形下，或者你是單純的投資者、使用者的話，是可以不必購買 ENS 服務的。那麼，到底誰會需要購買 ENS 的服務呢？

ENS 的用途
-------

筆者認為，目前的 ENS 在應用上，仍是類似 DNS 的服務所帶給服務或內容提供者的便利性，讓大眾可以輕鬆的記憶、訪問相關服務或創作者的內容使用 (這類服務通常會是 Web3.0 的服務)。

像是筆者的 mirror 網址，若沒有註冊 ENS 服務的話，就會是 `mirror.xyz/0x71A15b42Cb572143d4Fd1e0B92B75540599186EE` 這樣的一串網址，但因為我有購買、將我使用的地址綁定到 `carawang.eth` 這個 ENS 上，才讓我在 mirror 上的主頁可以變成一個相對好記得、讓使用者容易產生記憶點的網址: `mirror.xyz/carawang.eth`。

另外，ENS 的其他用途，筆者認為，若能透過 ENS 作為募款地址或群眾募資地址，對於送錢方與收款方來說都會非常方便。對於收款方若有需求進行地址的更換時，可以簡單將 ENS 發送到新的地址上做綁定即可，此時對於送錢方也就不必擔心打錢進了舊的或是錯誤的地址而捶心肝。

但是，特別是作為收款地址的使用上的話，因為 ENS 與 DNS 一樣都會有一個效期存在，因此作為收款方，需要特別小心此一效期時間、即時地做效期延展，否則可能會造成送錢方將辛苦錢打進了錯誤的地址而無法獲得原本希望得到的服務或是捐款意圖了。當然，若是單純用來作為服務、內容提供者的方便識別使用的話，也需要注意此一效期，否則時間到了，代表你原本苦心經營的品牌的 ENS 名稱被別人買走，那豈不是太令人沮喪了嗎！?

不過 ENS 的效期到期後，會有 90 天的寬限期，你只要在寬限期內進行延展，仍可保留此 ENS 名稱的擁有權。

如何購買想要的 ENS 名稱並綁定到地址上?
----------------------

目前有兩種方式可以去綁定 ENS:

1.  直接購買想要的 ENS 名稱、綁定到地址上
    
2.  使用既有的 DNS 綁定持有的網址到地址上
    

以下介紹第一種綁定方式，第二種綁定方式將於下一篇文章中再做介紹。

### 步驟一：找到你想要的 ENS 名稱

首先，你需要先透過以下網址進到 ENS 的服務中:

[https://app.ens.domains/](https://app.ens.domains/)

接著，可以直接搜尋你想要購買的 ENS 名稱:

![](https://storage.googleapis.com/papyrus_images/ecfaf51340efb263fc21b98e13bf31ca5e256541035ebb0f2b9fc968569e0442.png)

因為 ENS 的名稱都會是以 `.eth` 結尾，所以在搜尋時，無論你有沒有帶入 `.eth` ，搜尋到的都會直接幫你帶入 `.eth`，以上方截圖為例，我搜尋到的結果就會是 `carawang.eth` 這樣的結果。

### 步驟二：選擇購買、註冊年限

接著，若你想要註冊的 ENS 仍未被人買走的話，你便可以點選你想購買的搜尋結果做展開，展開的畫面如下:

![](https://storage.googleapis.com/papyrus_images/d92a02a4f8b66e8933c0dd886852b646e21781799fb840b81148c599380b2700.png)

當你展開某個搜尋結果時，預設的效期會是 1 年，你可以自行決定要購買多久效期的 ENS 服務。以上方截圖範例來說，我選擇的是購買 3 年效期的 ENS 服務。

ENS 的價格是由字數來做定價:

1.  五個字以上: 年費 5 美元
    
2.  四個字: 年費 160 美元
    
3.  三個字: 年費 640 美元
    

### 步驟三：遞交 ENS 名稱註冊申請書

當設定好效期後，你就可以點選下方的「Request To Register」按鈕。

不過，這邊筆者遇到一個小狀況，是我在點選「Request To Register」時，預期會自動跳出 MetaMask 做錢包做交易確認或錢包連結的動作，但我怎麼按都沒反應。此時我注意到左方的錢包連結框的內容，沒有正確顯示我的錢包地址。若你也發生按按鈕沒有反應的情況的話，可以檢查一下網頁左方是否有顯示你的錢包地址，若有如下方截圖的左側一樣出現你的錢包地址的話，才表示你已經連結成功，若此時你看到左方沒有顯示你的錢包地址的話，你可以點選橘色「Connect」按鈕先進行錢包連結，接著再去點選「Request To Register」預期就會有反應囉！

![](https://storage.googleapis.com/papyrus_images/48c683231923ccafb6ab384b6e57f89bae1ef6e98e7296800b47c033c8586102.png)

點選「Request To Register」後，MetaMask 會彈出來、要你進行交易確認，此交易是執行 ENS 智能合約中的 `commit` 呼叫，此動作完成後，會有為期 7 天的考慮期，若你沒有在這 7 天內完成後續購買動作的話，過了第 7 天，你想購買的這個 ENS 名稱就會再次開放給所有人註冊、購買，你也需要重新遞交申請書，才能再次進入到後續的註冊環節。

當你在 MetaMask 點選「Confirm」、送出交易後，你會看到下方的綠色進度條開始往前跑。依據此步驟的說明，ENS 是要確保沒有同時間購買、註冊此 ENS 的情況發生。

這個步驟我所花費的 Gas 是 `0.003648156386851561`ETH，以當下價格換算美金價值約 11 鎂。

![](https://storage.googleapis.com/papyrus_images/c05fb663fac951d93e2e7f1298d1549d7c3732322bb637947a3c1afd721907ed.png)

### 步驟四：註冊 ENS 名稱

經過一分鐘後，進度條會來到第三部驟、下方的「Register」按鈕可以點選了。

點選「Register」後，MetaMask 會再彈出要你進行交易確認的動作，此動作將觸發 ENS 智能合約中的 `registerWithConfig` 呼叫，即針對此 ENS 名稱進行付款、購買的動作，因此在 MetaMask 中，你可以看到 ENS 將跟你收取購買費用，也就是一開始在設定時間時，畫面上會幫你估算的購買費用。

此步驟我實際上花費了 `0.005027041231729858` ETH 的購買費用，交易手續費則付出了 `0.02191469984991315` ETH，換算成美元的話，總共花費了 88 鎂左右。

![](https://storage.googleapis.com/papyrus_images/be190c56ec379c79c5b6fcf06269ecac690dfe9bb5a69c4d65e7a8b4471560e1.png)

此步驟點選「Confirm」後，原本畫面中的「Registry」按鈕又將變成「Tx Pending」，表示交易已經上鏈、正在等待交易確認數。

![](https://storage.googleapis.com/papyrus_images/5accd96b927345eb54873c0d2ccda8789ed8dd6aaa6a81c2593e96f0f558b930.png)

當 TX Pending 結束後，你的註冊畫面會出現「Set As Primary ENS Name」按鈕，此時，你的地址尚未與此 ENS 做綁定，若你想要即刻幫你的購買地址綁定到此 ENS 上的話，可以在此時點選「Set As Primary ENS Name」按鈕。點選後，會帶你進到「My Account」頁面。

![](https://storage.googleapis.com/papyrus_images/f5ebf215e6b772beba5f8f6ac343345af04792563541c1ad6ca8fb36aee3216d.png)

### 步驟五：為這個地址設定主要的 ENS 名稱

進入「My Account」畫面後，你可以在紅色框框處的下拉選單進行選擇，選定後，點選「Save」按鈕即可進行綁定。

我在這個步驟花費的交易手續費是 `0.0136551531553498` ETH，約 44 鎂。

![](https://storage.googleapis.com/papyrus_images/f6b4f9d2d036607015917b13e33a6456dcd752bc76519c350f37d2465a9c5239.png)

完成上述步驟後，你已經成功地將地址與你所購買的 ENS 進行綁定了。

整個流程包含交易手續費的花費，我總共花了 143 (11 + 88 +44) 美元，換算台幣約四千多塊。

管理我的 ENS
--------

在「My Account」的管理頁面中，你可以點選下方的 ENS 名稱，以上圖為例，即點選「carawang.eth」的地方，進入設定頁面，在設定頁面中，你可以針對此 ENS 進行你的個人網站網址、email 等資訊。你可以點選「ADD/EDIT RECORD」進行編輯。

![](https://storage.googleapis.com/papyrus_images/160c0e71d8edcc31a3a833ec4eb389780811cd2bca4a3fb57496122909662875.png)

編輯完畢後，點選「Save」即會跳出以下視窗詢問你是否確定要進行修改:

![](https://storage.googleapis.com/papyrus_images/753ba83943418ca5753ae3eb63b58a834d7f0bcfe34d46033c87cf75ae4e79ed.png)

點選「Confirm」後，MetaMask 會跳出視窗要你進行交易確認，此時會觸發的是智能合約中的 `setText` 呼叫。

此步驟因為筆者想等之後一次進行多個欄位的修改後再一次送出，因此這次就沒有實際觸發智能合約呼叫、上鏈做修改，也就沒有花費交易手續費。

待綁定後，若你在進行同一個 ENS 的名稱搜尋，你會看到該名稱被標註為「Unavailable」:

![](https://storage.googleapis.com/papyrus_images/c6ad6990957cf8e93d988afcc76be6f1749608300d0b8d9485c8214b7d044af4.png)

點選名稱後，可以看到此 ENS 的購買者相關資訊，此資訊及為你剛剛在「My Account」中可以進行的設定內容:

![](https://storage.googleapis.com/papyrus_images/ea5e77c537e8e80d904ae7dac5fa765f8bf9ec1333f569fc3b82ea33cc71b802.png)

此處有趣的地方是，即使你不是這個 ENS 的擁有者，你也可以替這個 ENS 的有效期進行延展，此動作不會改變此 ENS 的所有者，僅是針對原本的所有者的效期做延展而已。對於服務提供者來說，若他們的服務是一個團體所提供的，那就可以藉由團體中的任何一人去執行延展動即可，筆者認為算是一個方便的功能。

綁定後可以在哪邊看得到？
------------

首先，你可以在 etherscan 上看到你的地址變成了你所綁定的 ENS 名稱:

![](https://storage.googleapis.com/papyrus_images/937a00bc7999e5c29e66cbf729592848b21850088f5725d1b25705af5f3e5a87.png)

除了 etherscan 外，你也可以在有串接 ENS 服務的網站中，看到你的地址已經更新成 ENS 名稱，下圖以 OpenSea 為例:

![](https://storage.googleapis.com/papyrus_images/e4a7bd9086c0b3731866517037b2a564650a910c36df546d0d20b4b1bf9beb86.png)

其他有支援 ENS 的服務可以從下方網址中看到:

[https://ens.domains/#home-ecosystem](https://ens.domains/#home-ecosystem)

此 ENS 在區塊鏈上實際會是以 ERC721 的 NFT 形式所存在，當你在付款動作完成後，你的地址實際上會收到一個 ENS 的 NFT:

![](https://storage.googleapis.com/papyrus_images/c29bb4ecc796e1313cf19f355f6d00dd9122aa1f426d06ea320b6f91b77535eb.png)

此 NFT 可以在如 OpenSea、LooksRare、x2y2 等等的二級市場中進行交易，若你在第一個步驟裡，從 ENS 的搜尋結果中發現你想要的 ENS 名稱已經被別人註冊走了的話，不妨到二級市場中出價看看，看對方是否願意接受你的出價、讓出 ENS 給你使用。

結語
--

ENS 的目標是希望讓以太坊的使用者容易識別各自的地址所使用，然而，目前的虛擬貨幣錢包服務，也都會讓使用者自行輸入、設定每個地址的聯絡者名稱以方便進行發送地址的區分用途。因此，對於虛擬貨幣的發送方來說，只要注意第一次設定地址時，有沒有輸入錯誤的地址，後續轉帳就都可以依靠自己設定的聯絡者名稱來做區分，在此使用情境下，ENS 的功用也就不大顯著，因此，筆者認為 ENS 的用途仍是類似 DNS 用在網站的識別使用，此使用率預期也將隨著 Web3.0 逐漸被大眾接受後，漸漸地增加各大網站針對 ENS 的技術整合，此時將帶動、增加一般內容或服務提供者對於 ENS 的使用率上升。

若你本身是內容提供者，或是你正在或打算實作 Web3.0 的服務的話，不妨利用此文章中的步驟說明進行購買、設定，並與個人或服務的識別進行連接、讓使用者或閱讀者可以容易記憶你的品牌識別名稱。

不過說實在的，當初買 DNS 時也才花了一千台幣不到，這次買 ENS 配上不低的 ETH 價格 (撰文當下 ETH/USDT 價格為 $3260)，換算成本要四千多台幣實在是貴鬆鬆。

不過更貴的還在後頭呢！後續的文章會再針對 ENS 的第二種綁定方式進行記錄，另外，因為筆者想透過研究 ENS 智能合約中的呼叫與架構實作上進行學習，預計也會把過程以文章的方式記錄下來。

寫在後面的介紹
-------

「區塊吧台」是 Metaverse Pets 社群中的子節目，會透過在 Discord 上直播的方式不定期地進行區塊鏈、虛擬貨幣有關的研究分享，若你對於此方面有任何想要分享卻苦於沒有舞臺的話，也非常歡迎你加入 Metaverse Pets 社群後與我報名「區塊吧台」的分享會。

以下是過往區塊吧台的分享會紀錄影片:

[https://youtube.com/playlist?list=PL56QIjxhXjEb-joZwpE7vdDEVVxc3o6WR](https://youtube.com/playlist?list=PL56QIjxhXjEb-joZwpE7vdDEVVxc3o6WR)

若你從我的文章或影片中獲得一些幫助、希望支持我繼續創作或記錄研究結果的話，歡迎購買 Metaverse Pets 的 NFT 當作支持，謝謝！

[https://opensea.io/collection/metaverse-pets](https://opensea.io/collection/metaverse-pets)

---

*Originally published on [Cara Wang](https://paragraph.com/@carawang-2/ethereum-name-service-ens)*
