跟随这些指示安装一个2021MBP与苹果M1 Pro芯片的RSK节点。我想在regtest模式下本地运行RSK节点。安装后,运行命令启动RSKj:
java \
-classpath ~/.rsk/rskj-core-3.1.0-IRIS-all.jar \
-Drpc.providers.web.cors=\* \
-Drpc.providers.web.ws.enabled=true \
co.rsk.Start \
--regtest..。结果出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni in java.library.path, /private/var/folders/40/k7t383452q75nkmr_5kl12_80000gn/T/libleveldbjni-64-8276576211622720497.jnilib: dlopen(/private/var/folders/40/k7t383452q75nkmr_5kl12_80000gn/T/libleveldbjni-64-8276576211622720497.jnilib, 0x0001): tried: '/private/var/folders/40/k7t383452q75nkmr_5kl12_80000gn/T/libleveldbjni-64-8276576211622720497.jnilib' (fat file, but missing compatible architecture (have 'x86_64,i386', need 'arm64e')), '/usr/lib/libleveldbjni-64-8276576211622720497.jnilib' (no such file)]
at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
at org.fusesource.leveldbjni.JniDBFactory.<clinit>(JniDBFactory.java:48)
at org.ethereum.datasource.LevelDbDataSource.init(LevelDbDataSource.java:104)
at org.ethereum.datasource.LevelDbDataSource.makeDataSource(LevelDbDataSource.java:70)
at co.rsk.RskContext.buildTrieStore(RskContext.java:1031)
at co.rsk.RskContext.buildAbstractTrieStore(RskContext.java:951)
at co.rsk.RskContext.getTrieStore(RskContext.java:408)
at co.rsk.RskContext.buildRepositoryLocator(RskContext.java:1073)
at co.rsk.RskContext.getRepositoryLocator(RskContext.java:384)
at co.rsk.RskContext.getTransactionPool(RskContext.java:353)
at co.rsk.RskContext.buildInternalServices(RskContext.java:844)
at co.rsk.RskContext.buildNodeRunner(RskContext.java:836)
at co.rsk.RskContext.getNodeRunner(RskContext.java:302)
at co.rsk.Start.main(Start.java:34)看起来最有可能的问题是RSKj中的某些东西与我的芯片架构不兼容。有什么解决办法可以让RSKj与M1芯片一起运行吗?
发布于 2022-01-20 06:47:54
您可以尝试使用Rosetta在M1上运行M1代码。只需在命令的开头添加arch -x86_64即可。
arch -x86_64 java \
-classpath ~/.rsk/rskj-core-3.1.0-IRIS-all.jar \
-Drpc.providers.web.cors=\* \
-Drpc.providers.web.ws.enabled=true \
co.rsk.Start \
--regtest发布于 2022-01-20 07:45:34
您是对的,问题在于leveldbjni依赖项,它不在aarch64体系结构上运行。但是,可以通过在Docker容器中运行RSK节点来克服这一限制。这个过程在RSK上的码头安装说明中有详细的描述。
摘要:
您可以安装正在运行的Docker
brew install --cask docker注册一个免费的Docker帐户,登录到您已安装的桌面应用程序,然后在终端运行
docker run rsksmart/rskj-standalone然后,您应该从Dockerfile.RegTest和supervisord.conf下载人工制品回购,并在同一个文件夹中执行:
docker buildx build --platform linux/amd64 -t regtest -f Dockerfile.RegTest .当构建完成后,您已经准备好运行RSK的容器。要运行容器,您应该执行
docker run -d --name regtest-node-01 -p 4444:4444 -p 30305:30305 regtest现在,您的本地测试RSK节点将运行就绪,以测试您的智能契约。
https://stackoverflow.com/questions/70781770
复制相似问题