【Lotus項目源代碼導讀】項目簡介

前言

Filecoin 可謂是當前區塊鏈的一個明星項目,首先在拼爹的年代它有一個高貴的出身:協議實驗室,這個名字或者有人比較陌生,但說起 IPFS 可就是鼎鼎大名了,IPFS 就是協議實驗室的大兒子。而 Filecoin 就是小兒子了,再有它可謂是含着金鑰匙出生的:2017 年該項目 ICO 的金額是 2.5 億美金,在當時是最高的。

IPFS 項目源自 2014 年,他本身已經很成功項目,代碼模塊化程度非常高,例如 libp2p 已經在開源社區很多應用。而 Filecoin 的項目不僅重用了 IPFS 的絕大多數代碼,而且開發者大多是原先開發 IPFS 的那批程序員,所以不僅技術起點高,而且團隊技術力量雄厚。所以這樣的項目不僅得到幣/鏈圈的推崇,也得到技術人員的喜愛。

最早 Filecoin 的項目是 go-filecoin,但 2019 年下半年團隊推出一個新的項目:lotus,這個項目後來居上,率先在 12 月 11 日啓動測試網。所以可以理解這個項目是之前 go-filecoin 的重構項目,但官方目前並沒有拋棄 go-filecoin 項目。本人理解其中原因是爲保證區塊鏈安全,因爲多個代碼實現可以避免因爲僅有的代碼實現的BUG而導致全網癱瘓。

項目相關鏈接:

  • github 代碼主倉庫:https://github.com/filecoin-project/lotus

  • 使用指南文檔:https://docs.lotu.sh/

  • 設計規範文檔:https://filecoin-project.github.io/specs

  • 測試網:https://stats.testnet.filecoin.io/ Slack

  • 官方頻道:https://app.slack.com/client/TEHTVS1L6/CPFTWMY7N

項目代碼分支

master 爲 0.2.x 版本的測試網版本,但最新代碼目前是在 testnet/3 分支上,對應的區塊鏈網絡名稱爲 interopnet,相當於是預測試網。本文開始寫時是 2020 年 4 月 23 日,使用的版本號爲 ac92ad36,後續隨着版本的版本,文中使用的代碼也會跟隨更新。

項目功能簡介

Lotus 是一個分佈式存儲區塊鏈項目,其目標是提供一個存儲的平臺和市場,一方是提供存儲和檢索服務的礦工,另一方普通用戶通過支付數字貨幣 Fil 可上傳存儲數據,並在需要時又可獲取到數據。礦工爲了證明自身進行存儲的事實,採用零知識證明加密技術對存儲的數據進行計算並將結果廣播到區塊鏈,一方獲取用戶支付的 Fil,另一方面獲得 Power(單位與存儲的字節一樣),當 Power 到達一定程度還可以有機會參與到區塊鏈的打包,從而再獲取得區塊打包的獎勵。

代碼基本情況

上層代碼開發語言爲 Golang,版本是 1.13 或以上。底層涉及到零知識證明等算法相關的邏輯採用 Rust 語言,toolchain 版本爲 nightly-2020-03-19。底層庫先是編譯成靜態庫,上層 Golang 通過 cgo 調用底層靜態庫。

底層的代碼倉庫叫 filecoin-ffi,URL:https://github.com/filecoin-project/filecoin-ffi.git,在主倉庫的路徑 extern/filecoin-ffi 之下。

二進制文件

代碼編譯後可能產生多個二進制文件,最主要有兩個:lotus 和 lotus-storage-miner。lotus 爲全節點,lotus-storage-miner 爲礦工軟件。這兩個軟件均是命令行方式運行。

後續

以上是 lotus 的基本介紹,後續再進 lotus 全節點 daemon 服務啓動過程的源代碼邏輯進行分析。

End
非常感謝您對 IPFS&Filecoin 項目的持續支持。我們很高興繼續與您一起,爲人類信息建立一個強大的,去中心化和高效的基礎。
FilCloud 幫你迅速瞭解 IPFS 領域的熱點技術和應用
公衆號:filcloud

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章