以太坊名称服务(ENS)提供了一个人们可读的名称,以识别在以太坊网络上的地址。它类似于互联网的域名服务(DNS),它提供了被映射到IP地址的人们可读域名。
在提供以太坊名称服务(ENS)的情况下,地址要么是钱包,要么是以太坊智能合约地址。
例如,你可以使用web3j.eth
来代替钱包地址0x19e03255f667bdfd50a32722df860b1eeaf4d635
。
ENS在web3j中的使用
在web3j中,你可以在任何你想进行交易的地方使用ENS名称服务。在实践中,这意味着,在智能合约封装中,当你加载它们时,例如:
1 | YourSmartContract contract = YourSmartContract.load( |
此外,当发送以太币的时候也可以使用ENS,例如使用命令行工具:
1 | $ web3j wallet send <walletfile> 0x<address>|<ensName> |
web3j实现
在后台,无论何时使用web3j的交易管理器(这些都是从ManagedTransaction类派生的),如果需要的话,调用EnsResolver以执行ENS查找。
实现查找的过程如下:
- 检查我们的以太坊节点是否完全同步
- 如果没有问题,下一步
- 如果它同步好了,检查它最近块上的时间戳。
- 如果超过3分钟没找到,宣告失败。
- 否则执行查找。
如果需要更改同步的阈值参数,那么在3分钟内可以通过setSyncThreshold
方法在ManagedTransaction类中完成。
Unicode技术标准(UTS#46)
UTS #46是用于对域名的输入进行检查的标准。在尝试查找之前,web3j ENS 要对所有输入都形成了这种映射。有关实现的详细信息,请参阅NameHash类。
注册域名
目前,web3j仅支持ENS域的解析。它不支持注册。有关如何做到这一点的说明,请参阅ENS quickstart。
汇智网原创翻译,转载请标明出处。这里是原文