运行 RSKj 节点在 Windows 机器上时如何修复 LevelDB 库加载错误?

How to fix LevelDB library load error when running RSKj node on a Windows machine?

我正尝试在 Windows 机器上 运行 RSK 区块链节点 RSKj。当我 运行 终端中的这一行时:

C:\Users\yemode> java -cp C:\Users\yemode\Downloads\Programs\rskj-core-3.0.1-IRIS-all.jar  co.rsk.Start

RSKj 节点启动 运行ning,但出现以下错误:

Cannot load secp256k1 native library: java.lang.Exception: No native library is found for os.name=Windows and os.arch=x86. path=/org/bitcoin/native/Windows/x86
Exception in thread "main" java.lang.RuntimeException: Can't initialize database
        at org.ethereum.datasource.LevelDbDataSource.init(LevelDbDataSource.java:110)
        at org.ethereum.datasource.LevelDbDataSource.makeDataSource(LevelDbDataSource.java:70)
        at co.rsk.RskContext.buildTrieStore(RskContext.java:1015)
        at co.rsk.RskContext.buildAbstractTrieStore(RskContext.java:935)
        at co.rsk.RskContext.getTrieStore(RskContext.java:416)
        at co.rsk.RskContext.buildRepositoryLocator(RskContext.java:1057)
        at co.rsk.RskContext.getRepositoryLocator(RskContext.java:384)
        at co.rsk.RskContext.getTransactionPool(RskContext.java:353)
        at co.rsk.RskContext.buildInternalServices(RskContext.java:829)
        at co.rsk.RskContext.buildNodeRunner(RskContext.java:821)
        at co.rsk.RskContext.getNodeRunner(RskContext.java:302)
        at co.rsk.Start.main(Start.java:34)

这可能是什么问题?

这实际上是一个警告,而不是错误,尽管它看起来像是后者。这意味着在您的 OS 和体系结构上,该特定库不存在,因此它会回退到不同的实现(使用非本机库)。在这种情况下,块验证速度较慢,但​​ RSKj 应该继续正常运行。

--import 标志可能会帮助您克服初始同步的“缓慢”。见 reference in the CLI docs for RSKj.

您也可以发送 RPC 以确保您的节点 运行 正常。 运行 在您的终端中执行以下 curl 命令

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

响应应该与此类似

{“jsonrpc”:“2.0",“id”:67,“result”:“0x2b12”}

其中 result 是您的最后一个区块编号