为何须要 libp2p-rs ?

Netwarps 一直在作去中心化的存储和计算平台,目标是物联网,甚至 NDN 网络。所以咱们须要构建一个简洁的高性能的底层网络。以前 Netwarps 使用 C 语言实现了一套基本的 P2P 网络,而后在这个网络上搭建了去中心化文件存储系统(DFS)和去中心化计算平台(DCP)。程序员

可是随着技术的发展,咱们愈来愈以为基于 C 语言构建的 P2P 底层网络存在不少问题:
一、C 语言实现的异步框架维护困难,代码逻辑复杂;
二、C 语言在程序员的眼里里彷佛正在失去吸引力;
三、C 语言与当下流行的不少设计方式,编程方式存在代沟,难以与其余项目造成良性互动。编程

因而,咱们开始考虑使用更新的语言来实现一套异步的,代码简洁的,运行高效的 P2P 网络。网络

而这时,咱们第一个就想到了 libp2p,做为区块链行业的明星项目,Go 语言的 libp2p 如今几乎成了去中心化网络的一个标杆。咱们本身对 libp2p 的使用其实很早就开始了,然而咱们却一直没有使用在咱们本身的去中心化存储和计算平台里,缘由只有一个,Go 语言是一个运行时比较重的语言,虽然 Go 适配了 Arm 等低功耗设备,可是其对硬件的要求,远不是咱们考虑的 IOT 设备能达到的。框架

当咱们起心开始作一个新的 P2P 网络的时候,咱们基本上就肯定了用 Rust 来实现。一方面,不少 IOT 设备已经兼容了 Rust,另外一方面,没有运行时的诱惑是任何一个把目光放在 IOT 方面的团队拒毫不了的,这意味这个人程序能够在更低功耗的硬件上运行。异步

然而,这条路并很差走。ide

首先,你们低估了 Rust 语法的难度,咱们的团队主要是 C 语言和 C++ 语言功底不错的程序员,在咱们看来,还有什么语言的语法会比这两个老古董更繁琐吗?很快就被打了脸。工具

其次,Rust 的生态对于入门玩家不太友好。咱们有同事说,当我编译出错的时候,我甚至不知道是个人问题仍是编译工具的问题。性能

再次,Rust 对程序员的约束性很强,虽然这一点在咱们开始这个项目以前也曾有所耳闻,可是咱们真没想到,这个适应的过程会这么长。区块链

还有,Rust 的异步框架成熟度都不过高,使用起来磕磕绊绊,有时候遇到问题也会无所适从。设计

可是,好在最后咱们完成了。完成 libp2p-rs 对咱们的团队是一个至关的成功也是一个至关的考验。

咱们深知 libp2p-rs 这个项目不是完美的甚至可能都说不上完善,但咱们坚持把它开源出来,一方面算是一个咱们向 Rust 社区的些微贡献,另外一方面,咱们但愿经过这个方式让更多的程序员尤为是中国程序员关注 Rust,关注 P2P。同时咱们也但愿你们可以了解,去中心化技术不只仅是区块链和各类 Coin,去中心化技术也是 IOT 甚至整个互联网的将来方向。

相关文章
相关标签/搜索