Myetherwallet

在測試網上註冊 ENS 名稱時出現問題

  • August 28, 2017

我的目標

我正在嘗試使用位於 0x21397c1a1f4acd9132fe36df011610564b87e24b 的 FIFSRegistrar 在 Ropsten 測試網上註冊一個名稱。我正在使用MEW發送交易。

標籤和雜湊

我將名稱稱為“myName.test”,但使用真正的雜湊值。

我標籤的雜湊是 sha3(‘myName’) = 0xc99b34b53e4b2e6ede6d30a0bb7d62dbb1c54f68113c9c189f572687fc778ecc。

我註冊的namehash是namehash(‘myName.test’) = 0x4c432675fc6a71ce63b71b12db314c4857a215abc7768ad213ebbcf88bdb5bd3。

交易嘗試

我的交易已被探勘,並且似乎按預期工作。特別是我可以在事件日誌中看到它呼叫了setSubnodeOwner()位於 0x112234455c3a32fd11230c42e7bccd4a84e02010 的 ENSRegistry 的函式。到現在為止還挺好。

但是,當我呼叫 ENSRegistry 的owner()函式並將我的姓名的 namehash 傳遞給它時,它返回 0x0。看來我的名字根本沒有註冊…

知道為什麼它不起作用嗎?

提前致謝。

您使用了錯誤的名稱雜湊。當您使用正確的 namehash 時,契約會將您顯示為所有者。

名稱雜湊

您的標籤雜湊的正確名稱雜湊.test0x944f155a1f09749e7a9ee390f3b20926c9a285939187135286e5a1b7fd39b8c2. 您的地址0x3a81ff1fdf10faa57e3d6f0628613ce276ee4f39擁有 Ropsten 上的該名稱雜湊。您可以通過以下步驟在MyEtherWallet.com上確認:

  1. 選擇右上角的 Ropsten 網路
  2. 從下拉列表中選擇 ENS Registry 合約
  3. 點擊Access
  4. owner從下拉列表中選擇函式
  5. 將 namehash 複製到node欄位中
  6. 點擊READ

確認 ENS 所有權

計算名稱雜湊

這是namehash的逐步計算:

from web3utils import web3

# namehash(ROOT)
rootnode = b'\0' * 32

# labelhash('test')
testhash = web3.sha3('test'.encode('utf-8'))

# namehash('test')
testnode = web3.sha3(rootnode + testhash)

# labelhash('??myname??')
mynamehash = web3.toAscii('0xc99b34b53e4b2e6ede6d30a0bb7d62dbb1c54f68113c9c189f572687fc778ecc')

# namehash('??myname??.test')
mynamenode = web3.sha3(testnode + mynamehash)

assert web3.toHex(mynamenode) == '0x944f155a1f09749e7a9ee390f3b20926c9a285939187135286e5a1b7fd39b8c2'

請注意,這使用了一個 python 庫web3utils,它需要一個本地節點。

引用自:https://ethereum.stackexchange.com/questions/24922