【问题标题】:Why does local RSK node show "invalid address" for my smart contract, even though I can see it in the block explorer?为什么本地 RSK 节点显示我的智能合约的“无效地址”,即使我可以在区块浏览器中看到它?
【发布时间】:2021-05-12 05:17:03
【问题描述】:

我正在使用以下命令运行 RSKj, 连接到 RSK 测试网:

java -cp rskj-core-2.2.0-PAPYRUS-all.jar -Drpc.providers.web.cors=* co.rsk.Start --testnet

但是,当我查询地址时, 我收到以下错误:

Invalid address
The checksum is invalid for the current network: RSK Testnet (31)

(地址是一个智能合约,值得) 我已验证此地址存在于 RSK 块资源管理器中。 那么是什么原因导致这种情况发生呢?

【问题讨论】:

    标签: checksum rsk


    【解决方案1】:

    如果您要连接到本地运行的 RSKj,连接到 RSK 测试网,并且地址存在; 但相同的地址确实存在于 RSK 公共节点上; 那么您应该检查您的本地节点是否已完全同步。 为此:

    (1)找出公共节点上的区块号是多少:

    curl \
      -X POST \
      -H "Content-Type: application/json" \
      --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
      https://public-node.testnet.rsk.co/
    

    这会产生一个较大的0x1bfe36 值,即1834550

    {"jsonrpc":"2.0","id":1,"result":"0x1bfe36"}
    

    (2) 找出你本地节点上的区块号:

    curl \
      -X POST \
      -H "Content-Type: application/json" \
      --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
      http://localhost:4444/
    

    如果您对当地的 RSKj 有一个全新的开始, 并且运行时间不长, 你可能会在结果中得到一个小数字, 比如0x3fff,就是16383

    {"jsonrpc":"2.0","id":1,"result":"0x3fff"}
    

    (3) 比较两个值 如果这些命令彼此在很短的时间内运行, 它们应该具有相同的值, 这意味着您的本地节点已完全同步。 但是,如上例所示, 本地节点有一个块号,其值小于公共节点。 这意味着它尚未完全同步。 如果部署了此特定地址的智能合约 在这个特定的数字之后, 你会得到上述错误, 因为那个地址什么都不存在。 解决方案是等到您的本地节点 与网络的其余部分(包括公共节点)完全同步; 在再次运行查询之前。

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 2021-10-16
      • 2023-02-03
      • 1970-01-01
      • 2023-02-23
      • 2015-05-28
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多