web3j与以太坊名称服务(ENS)

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

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

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

ENS在web3j中的使用

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

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

此外,当发送以太币的时候也可以使用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

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j开发详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

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