Skip to content

黑客马拉松

上周末参加了 Nervos 举办的一场黑客马拉松。我的 idea 主要是想结合区块链和 IOT做的东西 其实很简单,就是在一块儿 arm 单板上跑一个客户端,能发转账交易。

IOT 与区块链

IOT 与区块链的结合,这个话题已经有很多文章了。

但是在我看来,其实就一点。如果设备直接连到区块链,可以将其收集到的数据直接上链,减少人工干预,一定程度上可以让数据更可信。

比如,溯源场景。之前一直被人诟病的一点就是,各个环节的数据还是人工录入上链的,那么就有可能数据自源头就是假的。如果由 IOT 设备直接上链,虽然不能完全杜绝,但是至少数据造假的成本大大增加了。

交叉编译的一些问题

当我们想让原本在 x86 上跑的程序跑在 arm 上时,我们就需要 交叉编译

目前 arm 生态已经非常成熟。比如使用华为云上的鲲鹏主机,感觉跟 x86 服务器的体验已经很接近了。

Rustarm 的支持也已经做的很好了,只需要很少量的代码修改,就可以正常交叉编译。

遇到的问题主要有:

  1. Rustglibc 版本的要求太高了。Rust 在编译的时候会尽量使用高版本 glibc 里的函数,这就导致编译出来的可执行文件,无法在 glibc 版本比较低的环境中运行。
  2. 为了规避上述问题,尝试静态链接,即使用 Rustmusl 版本的 target。这时遇到的问题是 musl 提供的函数比 glibc 要少。而很多依赖 c 代码的包,比如各种 -sys 的包,会使用这些缺失的函数。导致链接时报找不到函数的错误。比如 rocksdbmusl 就是一对无解的组合。