這幾天看了申請 ENS 的文章, 自己也嘗試申請一組.
但是不同的是我用 MyEtherWallet APP 搭配 Web 來操作!
本次實驗是以之前收到版友打賞的小費來支付的
## 名詞解釋
- Owner: 能夠對這個域名或是子域名做設定的位置 建議是支援 Dapp Wallet
- Node: 域名或子域名 troylee.eth / tip.troylee.eth ...
傳送時必須以 namehash('node.domain.eth') 編碼
- Resolver: 如同 DNS Server, 負責將 tip.troylee.eth 解釋成錢包位置
透過 setAddr 來設定幣別對該種幣錢包地址設定
## 申請 ENS Domain
MyEtherWallet 內建的 Dapp 就有支援申請 ENS Domain 的功能, 使用方式非常簡單.
1. 用電腦進入 https://www.myetherwallet.com
2. 點選 Access My Wallet
3. 點選 MEWconnect 會出現 QRCode,
4. 用手機 MEW APP 右上角的相機去掃描, 手機會出現 Connected to MEW web
此時請勿按關閉或是 Disconnect, 手機請保留在這個畫面
5. 網頁點選左方 Dapp -> ENS Manager
6. 在 Register Domain 內輸入你想要的名字按 Check Domain,
- 例如我的 TroyLee.eth 就輸入 TroyLee
7. 如果尚未被註冊就會出現可以選擇要註冊幾年及費用, 價格跟名稱長度有關
8. 確定要註冊請按確認, 此時會先有一筆 0 ETH 的交易, 這筆用意是要先 Claim
Domain Name, 確認沒有其他人同時也想要註冊這網域
此時手機會跳出要確認交易的畫面, 按確認後回到網頁再按 Send
- 交易手續費約 0.0013 ETH
9. 等候交易被確認, 約數十秒. 交易確認後網頁畫面會出現 Register 的按鈕
10.按下 Register 按鈕並付網域註冊費用即便完成註冊
11.預設網域對應的錢包就會是你目前 MEW 付款的錢包
## 申請 ENS Subdomain - tip.troylee.eth
MyEtherWallet 我研究了很久, 內建的 Dapp 似乎沒有支援此項功能..
改採用以操作 Smart Contract 來設定
1. 點選網頁左邊 Contract -> Interact with contract 按鈕
2. Address 填入 0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e
- 請以 ENS Domain 所提供最新的合約地址為主
3. ABI/JSON Interface 請善用 Etherscan 網站
a) https://etherscan.io/address/0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e
b) 選擇 Contract Tab
c) 複製 Contract ABI
d) 貼回 MEW 網頁中的 ABI/JSON 欄位
4. 按下 Continue 按鈕
5. 畫面中間會有一個下拉選單可以選要呼叫的 Function Call, 請選 setSubnodeOwner
a) Node 欄位請填入 namehash('troylee.eth') 的數值
例如: 0xcc2610e4983c1001af93c9ac5ef46614028d60b9ec072c6fe5b2068b7ceb984f
b) Label 欄位請填入 keccak256('tip') 的數值
例如: 0x9c35b68a5d39a44a5834c87c06e0905b483f5921b1cdeb093ce2cca2a2349a4c
c) Owner 欄位請填入要對應可以管理這個網域名稱的錢包..
例如: 0xf92512467cF72b249e621DB334391F7d11FAFcB1
d) Value: 0 ETH
6. 後面操作就是與前面交易方式相同, 費用約 0.001 ETH
## 設定 tip.troylee.eth Resolver 位置
1. 重複先前步驟 1-3 步
2. Function Call 請選擇 setResolver
a) Node 欄位請填入 namehash('tip.troylee.eth')
例如: 0x18dffded765b6ce67e33c4a19324be7ef1a195ed1993d4d11b12775ab08c131f
b) Resolver 欄位請填入一組 Public Resolver, 建議採用 resolver.eth
例如: 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
c) Value: 0 ETH
3. 後面操作與前面交易方式相同, 費用約 0x001 ETH
## 設定 Resolver 將 tip.troylee.eth 對應至錢包位置
1. 點選網頁左邊 Contracts -> Interact with contract
2. 位置填入你選定的 Resolver (resolver.eth)
例如: 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
3. ABI/JSON 請善用 etherscan.io
https://etherscan.io/address/0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41#code
4. 點選 Continue 後, Function Call 請選擇 setAddr,
這邊有兩組, 不代 CoinType 的預設是 Ethereum 的位置
a) Node 欄位請填入 namehash('tip.troylee.eth')
例如: 0x18dffded765b6ce67e33c4a19324be7ef1a195ed1993d4d11b12775ab08c131f
b) Addr a 請填入接收錢包的位置
例如: 0xf92512467cF72b249e621DB334391F7d11FAFcB1
完成後可以去 Etherscan.io/ENS.Domains 直接搜尋你的 Domain 即可!
https://app.ens.domains/name/tip.troylee.eth
使用支援 ENS 的錢包, 輸入 tip.troylee.eth 即可直接支付!
https://i.imgur.com/HjziO1c.png
我的問題是 Subdomain 輸入的方式是取 keccak256, 這應該是 oneway hash.
為什麼回到 app.ens.domains 可以查到對應到的原始字串 tip 呢?
參考網站:
- https://docs.ens.domains/contract-api-reference/ens#set-subdomain-owner
- https://docs.ens.domains/contract-api-reference/ens#set-resolver
- https://emn178.github.io/online-tools/keccak_256.html
- https://swolfeyes.github.io/ethereum-namehash-calculator/
現學現賣小費箱: tip.troylee.eth
simpleledger:qq2c29w68qkre380j4fc9s53a9cnnmt2uvdq5l87hd