6

除了直接查询之外,我还想订阅事件以在到期日期更改时进行监听(例如,当它更新时)

我发现它NodeOwner.sol有一个 实现看起来很有希望的available函数:

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

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

    event ExpirationChanged(uint256 tokenId, uint expirationTime);

我无法弄清楚的是:

  • 如何获取NodeOwner- 应该查询哪个合约/地址?
  • 如果有多个可能的地址/实例NodeOwner,或者只有一个。
4

1 回答 1

7

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

在主网上,合约地址为0x45d3E4fB311982a06ba52359d44cB4f5980e0ef1,可在RSK explorer上进行验证。此合同的 ABI 可在此处找到。

使用 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)
})

您可以在 RNS Manager 上看到一个工作示例

于 2021-10-11T14:09:48.893 回答