2019.2.14 情人節,Filecoin項目開放了核心源碼倉庫go-filecoin,並更新了 filecoin-project organization下的諸多核心成果,這意味着,Filecoin已然度過了最困難的難點攻關期,進入到了全民公測階段。git
本系列文章將協助你們對源碼倉庫進行全解析,幫助你們系統地學習和了解Filecoin這個項目,發現新的機遇和商機,小編將在這段時間密切關注Filecoin動態,和你們一塊兒度過Filecoin全民公測階段。github
(萬事開頭難,一塊兒追溯和回顧一下Filecoin的革命歷程)golang
《Filecoin: A Cryptocurrency Operated File Storage Network》vim
本章咱們將一步一步,嘗試在本身的macOS和Linux服務器上搭建Filecoin測試節點,小編的實戰操做系統環境以下:xcode
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
在安裝和配置go-filecoin的測試節點以前,須要作的準備工做比較繁多,相對複雜,由於小編機器採用的是macOS,將使用homebrew包管理器來安裝語言環境。bash
爲啥安裝就不解釋了...服務器
# 須要安裝大於v1.11.2版本的golang brew install go go version go1.11.2 darwin/amd64
設置GOPATH,因爲小編採用的是zsh,而非macOS自帶的bash,因此環境變量設置在.zshrc中:微信
vim ~/.zshrc
編輯.zshrc,添加以下圖所示內容:網絡
記得重啓終端,新的環境變量GOPATH纔會生效運維
Filecoin的複製證實工程實現,基本都是使用rust編寫的,爲此,咱們須要安裝rust環境:
# 須要安裝大於v1.31.0版本的rust/Cargo brew install rustc rustc -V rustc 1.32.0 cargo -V cargo 1.32.0
處理編譯go-filecoin產生的linker flags
brew install pkg-config
這裏,將介紹兩種release安裝包的得到方式,一種是經過源碼進行自編譯,另外一種是下載官方發佈的release安裝包,兩種方式各有利弊,小編都實測了一下。
能夠重構go-filecoin相關源碼,定製本身專屬的go-filecoin binary release包,方便大夥們來炫技、PR、以及裝B。
mkdir -p ${GOPATH}/src/github.com/filecoin-project git clone git@github.com:filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoin
熟悉go語言的朋友確定不會陌生,源碼路徑習慣統一維護在${GOPATH}的src下,協議實驗室也是提倡你們遵照這樣的開發規範。
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-7 export CC=gcc-7
gx須要單獨介紹一下,這是一個頗有意思的golang包管理工具,其管理的全部依賴庫都存儲於IPFS網絡之中,由協議實驗室的核心工程師whyrusleeping所創造,並靈活運用於協議實驗室的各個代碼庫之中,而go-filecoin的依賴安裝也離不開gx:
go get -u github.com/whyrusleeping/gx gx version
設置了GOPATH,gx是能被識別爲全局環境變量的,不然沒法進行後續依賴安裝。
cd ${GOPATH}/src/github.com/filecoin-project/go-filecoin FILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build/*.go deps
提示:此過程比較漫長,小編機器跑了44分鐘多,且CPU過熱致使風扇不停,你們能夠看一下本身機器的狀況....
洗了個澡、泡了杯茶,刷了會抖音...
45分鐘過去了:
嗯...終於看到了安裝並編譯好的半成品...
別急,release成品就快了:
# 構建release包 go run ./build/*.go build # 安裝go-filecoin至${GOPATH}/bin目錄下 go run ./build/*.go install # 單元測試 go run ./build/*.go test
如上圖所示,能夠在https://github.com/filecoin-project/go-filecoin/releases中直接下載官方於2019年2月11日發佈的0.0.1版本,將安裝包解壓至{$gopath}/bin目錄下。
PS:好奇官方爲啥不配置個自動化持續集成...我也是無語了
通過1.2節操做後,全局運行go-filecoin -help
,出現以下圖菜單欄,說明節點已經成功安裝。
測試網絡有多種類型:
咱們在初始化的時候,能夠按照需求,指定flag:
go-filecoin init --devnet-user --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car
以下圖所示,完成初始化操做後,便可正式啓動並運行咱們的Filecoin測試節點了:
go-filecoin daemon
Filecoin發現節點的過程是遵循着gossip協議,逐漸向外發散,咱們能夠經過go-filecoin swarm peers
來查看所鏈接對等方的信息和過程。
PS: 存在一些網絡鏈接的錯誤日誌,看來NAT的問題依然存在,測試網並未在libp2p上針對多層NAT進行方案解決升級。
與IPFS不同,Filecoin考慮到了以Qm..
開頭的冗長NodeID並很差記憶,這裏加了一些比較人性化的設計,即,能夠爲本身的節點建立專屬暱稱(nickname),不過僅限字符串:
#設置 go-filecoin config heartbeat.nickname "jialesoho" #覈對 go-filecoin config heartbeat.nickname
設置節點心跳配置,與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代幣》
本系列文章預計10+篇,歡迎感興趣的朋友參與,同時將開放贊助渠道,大家的贊助和打賞是支持我業餘時間持續寫做的動力,我也將盡本身所能,最大化地爲閱讀者和相關創業公司品牌帶來幫助和權益, 具體以下:
私信我便可,聯繫方式已在上方聯繫讀者處給出。
星鑑網 是一家專一於IPFS生態的垂直媒體,集信息傳播,技術推廣,應用孵化於一身;感謝星鑑網(ipfsfirst.com)對嘉樂SOHO原創內容的支持。
深夜寫做,難免有不足之處,歡迎指正和更多討論,可私信微信公衆號:jialesoho,或者加我微信:daijiale6239,若是以爲對您有幫助,能夠幫點擊好看推廣和打賞支持噢,感激涕零!