在測試網上註冊 ENS 名稱時出現問題
我的目標
我正在嘗試使用位於 0x21397c1a1f4acd9132fe36df011610564b87e24b 的 FIFSRegistrar 在 Ropsten 測試網上註冊一個名稱。我正在使用MEW發送交易。
標籤和雜湊
我將名稱稱為“myName.test”,但使用真正的雜湊值。
我標籤的雜湊是 sha3(‘myName’) = 0xc99b34b53e4b2e6ede6d30a0bb7d62dbb1c54f68113c9c189f572687fc778ecc。
我註冊的namehash是namehash(‘myName.test’) = 0x4c432675fc6a71ce63b71b12db314c4857a215abc7768ad213ebbcf88bdb5bd3。
交易嘗試
我的交易已被探勘,並且似乎按預期工作。特別是我可以在事件日誌中看到它呼叫了
setSubnodeOwner()
位於 0x112234455c3a32fd11230c42e7bccd4a84e02010 的 ENSRegistry 的函式。到現在為止還挺好。但是,當我呼叫 ENSRegistry 的
owner()
函式並將我的姓名的 namehash 傳遞給它時,它返回 0x0。看來我的名字根本沒有註冊…知道為什麼它不起作用嗎?
提前致謝。
您使用了錯誤的名稱雜湊。當您使用正確的 namehash 時,契約會將您顯示為所有者。
名稱雜湊
您的標籤雜湊的正確名稱雜湊
.test
是0x944f155a1f09749e7a9ee390f3b20926c9a285939187135286e5a1b7fd39b8c2
. 您的地址0x3a81ff1fdf10faa57e3d6f0628613ce276ee4f39
擁有 Ropsten 上的該名稱雜湊。您可以通過以下步驟在MyEtherWallet.com上確認:
- 選擇右上角的 Ropsten 網路
- 從下拉列表中選擇 ENS Registry 合約
- 點擊
Access
owner
從下拉列表中選擇函式- 將 namehash 複製到
node
欄位中- 點擊
READ
計算名稱雜湊
這是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,它需要一個本地節點。