Netwarps 一直在做去中心化的存储和计算平台,目标是物联网,甚至 NDN 网络。因此我们需要构建一个简洁的高性能的底层网络。之前 Netwarps 使用 C 语言实现了一套基本的 P2P 网络,然后在这个网络上搭建了去中心化文件存储系统(DFS)和去中心化计算平台(DCP)。
但是随着技术的发展,我们越来越觉得基于 C 语言构建的 P2P 底层网络存在很多问题:
1、C 语言实现的异步框架维护困难,代码逻辑复杂;
2、C 语言在程序员的眼里里似乎正在失去吸引力;
3、C 语言与当下流行的很多设计方式,编程方式存在代沟,难以与其他项目形成良性互动。
于是,我们开始考虑使用更新的语言来实现一套异步的,代码简洁的,运行高效的 P2P 网络。
而这时,我们第一个就想到了 libp2p,作为区块链行业的明星项目,Go 语言的 libp2p 现在几乎成了去中心化网络的一个标杆。我们自己对 libp2p 的使用其实很早就开始了,然而我们却一直没有使用在我们自己的去中心化存储和计算平台里,原因只有一个,Go 语言是一个运行时比较重的语言,虽然 Go 适配了 Arm 等低功耗设备,但是其对硬件的要求,远不是我们考虑的 IOT 设备能达到的。
当我们起心开始做一个新的 P2P 网络的时候,我们基本上就确定了用 Rust 来实现。一方面,很多 IOT 设备已经兼容了 Rust,另一方面,没有运行时的诱惑是任何一个把目光放在 IOT 方面的团队拒绝不了的,这意味这我的程序可以在更低功耗的硬件上运行。
然而,这条路并不好走。
首先,大家低估了 Rust 语法的难度,我们的团队主要是 C 语言和 C++ 语言功底不错的程序员,在我们看来,还有什么语言的语法会比这两个老古董更繁琐吗?很快就被打了脸。
其次,Rust 的生态对于入门玩家不太友好。我们有同事说,当我编译出错的时候,我甚至不知道是我的问题还是编译工具的问题。
再次,Rust 对程序员的约束性很强,虽然这一点在我们开始这个项目之前也曾有所耳闻,但是我们真没想到,这个适应的过程会这么长。
还有,Rust 的异步框架成熟度都不太高,使用起来磕磕绊绊,有时候遇到问题也会无所适从。
但是,好在最后我们完成了。完成 libp2p-rs 对我们的团队是一个相当的成功也是一个相当的考验。
我们深知 libp2p-rs 这个项目不是完美的甚至可能都说不上完善,但我们坚持把它开源出来,一方面算是一个我们向 Rust 社区的些微贡献,另一方面,我们希望通过这个方式让更多的程序员尤其是中国程序员关注 Rust,关注 P2P。同时我们也希望大家能够了解,去中心化技术不仅仅是区块链和各种 Coin,去中心化技术也是 IOT 甚至整个互联网的未来方向。
Github 链接地址:https://github.com/netwarps/libp2p-rs
Netwarps 由国内资深的云计算和分布式技术开发团队组成,该团队在金融、电力、通信及互联网行业有非常丰富的落地经验。Netwarps 目前在深圳、北京均设立了研发中心,团队规模30+,其中大部分为具备十年以上开发经验的技术人员,分别来自互联网、金融、云计算、区块链以及科研机构等专业领域。
Netwarps 专注于安全存储技术产品的研发与应用,主要产品有去中心化文件系统(DFS)、去中心化计算平台(DCP),致力于提供基于去中心化网络技术实现的分布式存储和分布式计算平台,具有高可用、低功耗和低网络的技术特点,适用于物联网、工业互联网等场景。