链眼社区:专注于区块链安全,区块链数据分析, 区块链信息整合,区块链技术服务和区块链技术咨询。

java以太坊库web3j文档:以太坊名称服务ENS
清风慕竹
2021-10-11 20:37:21

以太坊名称服务(ENS)提供了一个人们可读的名称,以识别在以太坊网络上的地址。它类似于互联网的域名服务(DNS),它提供了被映射到IP地址的人们可读域名。

在提供以太坊名称服务(ENS)的情况下,地址要么是钱包,要么是以太坊智能合约地址。

例如,你可以使用web3j.eth来代替钱包地址0x19e03255f667bdfd50a32722df860b1eeaf4d635。

ENS在web3j中的使用

在web3j中,你可以在任何你想进行交易的地方使用ENS名称服务。在实践中,这意味着,在智能合约封装中,当你加载它们时,例如:

YourSmartContract contract = YourSmartContract.load(
        "0x<address>|<ensName>", web3j, credentials, GAS_PRICE, GAS_LIMIT);

此外,当发送以太币的时候也可以使用ENS,例如使用命令行工具:

$ web3j wallet send <walletfile> 0x<address>|<ensName>

web3j实现

在后台,无论何时使用web3j的交易管理器(这些都是从ManagedTransaction类派生的),如果需要的话,调用EnsResolver以执行ENS查找。

实现查找的过程如下:

  • 检查我们的以太坊节点是否完全同步
  • 如果没有问题,下一步
  • 如果它同步好了,检查它最近块上的时间戳。
    1. 如果超过3分钟没找到,宣告失败。
    2. 否则执行查找。 如果需要更改同步的阈值参数,那么在3分钟内可以通过setSyncThreshold方法在ManagedTransaction类中完成。

Unicode技术标准(UTS#46)

UTS #46是用于对域名的输入进行检查的标准。在尝试查找之前,web3j ENS 要对所有输入都形成了这种映射。有关实现的详细信息,请参阅NameHash类。

注册域名

目前,web3j仅支持ENS域的解析。它不支持注册。有关如何做到这一点的说明,请参阅ENS quickstart。

汇智网原创翻译,转载请标明出处。这里是原文

合作伙伴