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