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,若是以为对您有帮助,能够帮点击好看推广和打赏支持噢,感激涕零!