Search code examples
rsk

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


I am trying to run RSK blockchain node RSKj on a Windows machine. When I run this line in a terminal:

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

the RSKj node starts running, but I get the following error:

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)

What could be the problem here?


Solution

  • This is actually a warning, not an error, though it may seem like the latter. This means that on your OS and architecture, that particular library does not exist, so it falls back to a different implementation (using a non-native library). In this case, the block verification is slower, but otherwise RSKj should continue to function properly.

    Something that might help you to overcome the “slowness” of the initial sync is the --import flag. See the reference in the CLI docs for RSKj.

    Also you can send an RPC to ensure that your node is running OK. Run the following curl command in your terminal

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

    The response should be similar to this one

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

    where the result is your last block number