我很好奇,您将如何实现一个智能契约,注册一个(子)域在ens上。我找到的文档都指定ENS使用SHA3对域进行散列。我认为Keecak256应该等同于SHA3。然而,在这个论坛上有几个问题(这里,这里和这里)证明是相反的。另外,查看keecak256和sha3的在线散列输出,我看到相同输入的不同输出。
关于如何实现我发现的名称散列算法的伪代码,这里如下所示:
def namehash(name):
if name == '':
return '\0' * 32
else:
label, _, remainder = name.partition('.')
return sha3(namehash(remainder) + sha3(label))
到目前为止,我的理解是,稳健的Keecak256应该具有与SHA3相同的结果。因此,我应该像这样使用Keecak256而不是SHA3实现这个名称散列算法。但是,由于这似乎没有产生正确的结果,那么如何正确地实现这个算法呢?
发布于 2022-11-16 10:33:39
SHA3和Keccak256是不同的哈希算法。您可以使用keccak256函数散列ENS中的标签。我认为,在可靠的情况下,正确地实现名称散列算法如下:
https://ethereum.stackexchange.com/questions/139511
复制相似问题