如何查询RNS域名的过期时间?

How to query the expiry date for an RNS domain?

除了直接查询外,我还想订阅事件以在到期日期发生变化时(例如续订时)监听

我发现 NodeOwner.sol 有一个 available function 其实施看起来很有希望:

    function available(uint256 tokenId) public view returns(bool) {
        return expirationTime[tokenId] < now;
    }

并且同一个文件还定义了一个 ExpirationChanged event:

    event ExpirationChanged(uint256 tokenId, uint expirationTime);

我没弄清楚的是:

要获取单个域名的过期时间,可以使用RSKOwner合约和expirationTime方法。您可以在您感兴趣的域名下查询此合同。

在主网上,合约的地址是0x45d3E4fB311982a06ba52359d44cB4f5980e0ef1,可以在RSK explorer. The ABI for this contract can be found here.

上验证

使用 Web3 库,您可以像这样查询单个域(例如 testing.rsk):

const rskOwner = new web3.eth.Contract(rskOwnerAbi, rskOwnerAddress);

const hash = `0x${sha3('testing')}`;

rskOwner.methods.expirationTime(hash).call((error, result) => {
    console.log('expires at: ', result)
})

您可以看到 working example of this on the RNS Manager.