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插到路由器上供电,非常好