【Filecoin原始碼倉庫全解析】第一章:搭建Filecoin測試節點

買賣虛擬貨幣

        2019.2.14 情人節,Filecoin專案開放了核心原始碼倉庫go-filecoin,並更新了 filecoin-project organization下的諸多核心成果,這意味著,Filecoin已然度過了最困難的難點攻關期,進入到了全民公測階段

        本系列文章將協助大家對原始碼倉庫進行全解析,幫助大家系統地學習和了解Filecoin這個專案,發現新的機遇和商機,小編將在這段時間密切關注Filecoin動態,和大家一起度過Filecoin全民公測階段


章節目錄

Filecoin里程碑

第一章:搭建Filecoin測試節點

第二章:如何建立錢包,獲取FIL Mock代幣

第三章:儲存提供方(礦工)的配置操作

第四章:儲存需求方的配置操作

第五章:如何讓自己的節點加入測試網路

第六章:如何組建多節點礦工叢集('礦池')

第七章:如何參與複製證明遊戲測試

第八章:Filecoin Organization介紹

More


Filecoin里程碑

(萬事開頭難,一起追溯和回顧一下Filecoin的革命歷程)

  • 2015年7月15日,Filecoin釋出了第一版白皮書:
    《Filecoin: A Cryptocurrency Operated File Storage Network》

  • 2016年,Juan Benet首次對外發布Filecoin主題演講,向大眾宣告:IPFS準備新增一個名為Filecoin,基於區塊鏈的貨幣層,以激勵IPFS網路上的資料儲存。

  • 2017年7月19號,Filecoin釋出了第二版白皮書:《Filecoin: A Decentralized Storage Network》。

  • 2017年8月-9月,Filecoin釋出了SAFT協議,開始在Coinlist上發起眾籌,吸引來自50個國家的2100+投資人參與,成功募集2.57億美金,並承諾於2022年之前完成此專案。

  • 2018年8月,Filecoin在Lab Day技術日,釋出了Demo和測試網路模擬器演示,並向大眾開放Github之上的filecoin-project organization。

  • 2019年2月14日,filecoin-project organization開源了核心原始碼庫:go-filecoin,開啟全民公測階段

  • 未來,更多期待...

        本章我們將一步一步,嘗試在自己的macOS和Linux伺服器上搭建Filecoin測試節點,小編的實戰作業系統環境如下:

Darwin daijialedeMBP.lan 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64

第一章 搭建Filecoin測試節點

1.1 準備環境依賴

        在安裝和配置go-filecoin的測試節點之前,需要做的準備工作比較繁多,相對複雜,因為小編機器採用的是macOS,將使用homebrew包管理器來安裝語言環境。

1.1.1 golang安裝

        為啥安裝就不解釋了...

# 需要安裝大於v1.11.2版本的golangbrew install gogo version go1.11.2 darwin/amd64

        設定GOPATH,由於小編採用的是zsh,而非macOS自帶的bash,所以環境變數設定在.zshrc中:


vim ~/.zshrc

        編輯.zshrc,新增如下圖所示內容:

        記得重啟終端,新的環境變數GOPATH才會生效

1.1.2 rust安裝

        Filecoin的複製證明工程實現,基本都是使用rust編寫的,為此,我們需要安裝rust環境:

# 需要安裝大於v1.31.0版本的rust/Cargobrew install rustcrustc -Vrustc 1.32.0cargo -Vcargo 1.32.0

1.1.3 pkg-config安裝

        處理編譯go-filecoin產生的linker flags

brew install pkg-config


1.2 安裝配置go-filecoin

        這裡,將介紹兩種release安裝包的獲得方式,一種是透過原始碼進行自編譯,另一種是下載官方釋出的release安裝包,兩種方式各有利弊,小編都實測了一下。

1.2.1 自編譯release安裝包

可以重構go-filecoin相關原始碼,定製自己專屬的go-filecoin binary release包,方便大夥們來炫技、PR、以及裝B。

  • 好處:繞過了複雜和漫長的原始碼編譯環節

  • 壞處:編譯準備環節比較複雜,需要較強的Debug和運維能力,同時編譯耗時長,對機器CPU效能要求更高。

a.下載go-filecoin原始碼倉庫:

mkdir -p ${GOPATH}/src/github.com/filecoin-projectgit clone [email protected]:filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoin

        熟悉go語言的朋友肯定不會陌生,原始碼路徑習慣統一維護在${GOPATH}的src下,協議實驗室也是提倡大家遵守這樣的開發規範。

b.檢查並更新gcc/Clang版本

        go-filecoin在構建時需要引用到cgo-compatible rust-proofs library 證明依賴,因此需要c編譯器支援,比較常見的c編譯器工具有:gcc/clang,下面分別介紹兩個工具的配置:

Clang

        macOS使用者如果安裝過xcode,預設應該是高版本的clang配置,小編機器的Clang配置如下:

        如圖所示,Clang-902.0.39.1版本,是符合接下來的編譯需求的。

gcc

        gcc需要v7.4.0的高版本支援,以及指定特殊系統變數$CC

brew install gcc-7export CC=gcc-7


c.安裝gx包管理工具

        gx需要單獨介紹一下,這是一個很有意思的golang包管理工具,其管理的所有依賴庫都儲存於IPFS網路之中,由協議實驗室的核心工程師whyrusleeping所創造,並靈活運用於協議實驗室的各個程式碼庫之中,而go-filecoin的依賴安裝也離不開gx:

go get -u github.com/whyrusleeping/gxgx version

        設定了GOPATH,gx是能被識別為全域性環境變數的,否則無法進行後續依賴安裝。

d.安裝依賴並編譯原始碼

cd ${GOPATH}/src/github.com/filecoin-project/go-filecoinFILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build/*.go deps

        提示:此過程比較漫長,小編機器跑了44分鐘多,且CPU過熱導致風扇不停,大家可以看一下自己機器的情況....

d.構建、安裝、測試自編譯包

    洗了個澡、泡了杯茶,刷了會抖音...

    45分鐘過去了:

    嗯...終於看到了安裝並編譯好的半成品...

    別急,release成品就快了:

# 構建release包go run ./build/*.go build# 安裝go-filecoin至${GOPATH}/bin目錄下go run ./build/*.go install# 單元測試go run ./build/*.go test


1.2.2 獲取官方release安裝包

        如上圖所示,可以在https://github.com/filecoin-project/go-filecoin/releases中直接下載官方於2019年2月11日釋出的0.0.1版本,將安裝包解壓至{$gopath}/bin目錄下。

  • 好處:繞過了複雜和漫長的原始碼編譯環節。

  • 壞處:由於官方程式碼倉庫在頻繁更新,無法獲取最新的程式碼包,實時性滯後。

PS:好奇官方為啥不配置個自動化持續整合...我也是無語了

1.3 驗證安裝

        經過1.2節操作後,全域性執行go-filecoin -help,出現如下圖選單欄,說明節點已經成功安裝。

1.4 初始化節點

        測試網路有多種型別:

  • devnet-user 針對普通使用者

  • devnet-nightly 針對開發者使用者

        我們在初始化的時候,可以按照需求,指定flag:

go-filecoin init --devnet-user --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car

1.5 執行Filecoin節點

        如下圖所示,完成初始化操作後,即可正式啟動並執行我們的Filecoin測試節點了:

go-filecoin daemon

        Filecoin發現節點的過程是遵循著gossip協議,逐漸向外發散,我們可以透過go-filecoin swarm peers來檢視所連線對等方的資訊和過程。

PS: 存在一些網路連線的錯誤日誌,看來NAT的問題依然存在,測試網並未在libp2p上針對多層NAT進行方案解決升級。

1.6 為節點定義專屬暱稱

        與IPFS不一樣,Filecoin考慮到了以Qm..開頭的冗長NodeID並不好記憶,這裡加了一些比較人性化的設計,即,可以為自己的節點建立專屬暱稱(nickname),不過僅限字串

#設定go-filecoin config heartbeat.nickname "jialesoho"#核對go-filecoin config heartbeat.nickname

1.7 節點與網路的視覺化監控

        設定節點心跳配置,與Filecoin網路監控建立連線:

go-filecoin config heartbeat.beatTarget "/dns4/stats-infra.kittyhawk.wtf/tcp/8080/ipfs/QmUWmZnpZb6xFryNDeNU7KcJ1Af5oHy7fB9npU67sseEjR"

        如下圖所示,登入視覺化控制檯,https://stats.kittyhawk.wtf/,可檢視Filecoin測試網(devnet)狀態以及個人節點資訊:

        如圖所示,剛剛我們自定義命名的Filecoin節點——jialesoho已經被點亮在Filecoin的全網視覺化監控面板中,除此之外,視覺化控制檯還有許多全網的交易資料,吞吐量,區塊資訊可供我們查閱和分析...

        至此,我們應該可以透過《【Filecoin原始碼倉庫全解析】第一章:搭建Filecoin測試節點》的學習,順利搭建並測試自己的Filecoin節點了,期望幫正在電腦前研究Filecoin原始碼倉庫的你,少走彎路!

        下一章,我們將介紹《【Filecoin原始碼倉庫全解析】第二章:如何建立個人錢包,獲取FIL Mock代幣》

參考文獻:


  • go-filecoin | github (https://github.com/filecoin-project/go-filecoin/wiki/Getting-Started#start-running-filecoin)

免責聲明:

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

推荐阅读

;