爲何須要 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 甚至整個互聯網的將來方向。

相關文章
相關標籤/搜索