【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而導致全網癱瘓。

專案相關連結:

專案程式碼分支

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 服務啟動過程的原始碼邏輯進行分析。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;