MENU

【歪门邪道】树莓派编译运行Neo CLI v3.0.2

September 19, 2021 • 瞎折腾

最近对区块链颇有兴趣,但传统的工作量证明实属费电不环保。于是将目光转向权益证明 / 抵押证明的区块链。正巧 Neo N3 就是其中之一,本文将介绍如何在树莓派 4B 上编译运行一个 Neo N3 的全节点 neo-cli

Disclaimer

我从来没写过 C#,也没搞清楚它和.net 有什么关系,如果后文中有没能遵循.net 和 / 或 C# 最佳实践的操作,请在评论区中友善的指出。

由于 Neo N3 的官方实现使用 C# 实现,所以得现在树莓派上安装 dotnet sdk,目前微软暂不提供 ARM 架构的软件源,所以只能利用安装脚本手动安装:

  • wget https://dot.net/v1/dotnet-install.sh
  • chmod +x dotnet-install.sh
  • ./dotnet-install.sh -c 5.0

安装时唯一要注意的就是安装脚本用非 root 账户执行即可,安装时使用目录 ~/.dotnet,所以安装完成后还要修改 ~/.profile,将安装路径加入 PATHPATH="$HOME/.dotnet:$PATH"

之后还要安装一些系统依赖,好在这些在树莓派官方 OS 的镜像源中全都有提供,复制粘贴 Neo Node 的说明即可:

  • sudo apt-get install libleveldb-dev sqlite3 libsqlite3-dev libunwind8-dev

之后使用 git clone 获取源代码,即可开始编译:

  • mkdir ~/neo-cli-build
  • cd ~/neo-cli-build
  • git clone -b v3.0.2 https://github.com/neo-project/neo-node.git
  • cd neo-node/neo-cli
  • dotnet restore
  • dotnet publish -c Release
  • cp -R ~/neo-cli-build/neo-node/neo-cli/bin/Release/net5.0/ ~/neo-cli-build/build-result/
  • mkdir ~/neo-cli-build/build-result/Plugins

截至目前,neo-cli 的最新版本是 v3.0.2,上述代码将在 home 目录下创建一个工作文件夹,克隆代码,使用 dotnet 进行发布版本编译,然后将编译结果复制到 build-result 文件夹中。但此时编译出来的程序还不能直接运行。根据 Neo 官方的说明,要运行一个 Neo N3 节点,除了程序本体之外还需要一个 levelDB 插件,使得本体可以使用 levelDB 存储区块数据。做成插件的好处就是这个存储层可以换成 RocksDB,增大了灵活性,但代码就是引入了额外的复杂性。

Disclaimer2

我不知道已经编译好的 neo-modules 能不能直接使用。我知道 C# 语言会被编译成 MSIL(微软中间语言),随后被某个运行时解释执行。所以与其尝试能否正确运行,不如索性从头编译一遍。这也许不是最佳实践,但微软的东西在 Linux 上,我确实不怎么看好。

Disclaimer3

上面我将 C# 称为「微软的东西」,显而易见,它并没有 Java 那么开放。在 Java 运行时的选择上,除了 Oracle 自己的 JDK 之外,我们还有许多可选的其他 JDK,比如来自商业公司的 ZuluJDK,开源的 OpenJDK 等,至于 C#,我只听过 Mono。虽然在设计上 C# 确实比 Java 要高一头,但从其他方面来看,我个人还是更喜欢 Java 一些。

如下代码将获取 neo-modules 并编译全部插件。截至本文发表时,neo-modules 的版本只到 v3.0.1

  • cd ~/neo-cli-build
  • git clone -b v3.0.1 https://github.com/neo-project/neo-modules.git
  • cd ~/neo-cli-build/neo-modules
  • dotnet restore
  • dotnet publish -c Release
  • cp ~/neo-cli-build/neo-modules/src/LevelDBStore/bin/Release/net5.0/LevelDBStore.dll ~/neo-cli-build/build-result/Plugins/

编译完成后将 LevelDBStore 插件拷贝到 neo-cli 的插件目录,一个最小功能的 Neo N3 全节点就可以运行了,除此之外还可以按需要将其他插件连同配置文件拷贝到插件目录中。

运行全节点:

  • cd ~/neo-cli-build/build-result
  • dotnet neo-cli.dll

受制于树莓派的性能,达到完全同步耗时大约 8 小时。

- 全文完 -


知识共享许可协议
【歪门邪道】树莓派编译运行 Neo CLI v3.0.2天空 Blond 采用 知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://skyblond.info/about.html 处获得。

Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

2 Comments
  1. 过来种草,@(呵呵)

    1. @平顶山感觉树莓派现在还挺有用的。有些东西用服务器 / 电脑跑太费电了,不跑又很不方便,这个时候树莓派的成本还是最划算的。我家那个树莓派 2B + 用作透明代理已经有两年多了,配置完了就用 USB 插到路由器上供电,非常好