最近对区块链颇有兴趣，但传统的工作量证明实属费电不环保。于是将目光转向权益证明/抵押证明的区块链。正巧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，将安装路径加入PATH：PATH="$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小时。-全文完-
【歪门邪道】在树莓派上搭建LNMP服务器并使用I2S声卡
最近找出来了树莓派2B和之前买的一块国产PiFi（仿HiFiberry DAC+）的HiFi声卡，原本是配合Vulomio系统使用的，但是在这次应用中，我把它配置成了LNMP服务器搭贴吧签到和wordpress，然后搭载了一块声卡配合mplayer播放音乐。这个需求对于volumio系统来说有些强人所难。所以LNMP的安装上，我用的是LNMP一键安装包，编译安装共计5小时。树莓派超频之后是4核1Ghz的CPU，1GB内存，Swap交换区可能稍微比内存小一点吧。根据LNMP一键安装包的官方说明，使用MySql5.6或5.7需要1GB以上内存，所以对于树莓派2B来说，我用的是5.5.开启了InnoDB，没有内存管理的软件。装好了，下面就是开启I2S声卡的教程了。根据网上的资料，我并没有找到任何一篇正确设置的文章。以下是我的方法。[...]