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