2

我正在使用以下命令运行 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 区块浏览器中。那么是什么导致这种情况发生呢?

4

1 回答 1

2

如果您要连接到本地运行的 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/

这会产生一个很大的值0x1bfe361834550

{"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-05-12T05:40:02.247 回答