【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点

18次阅读

共计 4739 个字符,预计需要花费 12 分钟才能阅读完成。

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,开启全民公测阶段。
未来,更多期待 …

第一章 搭建 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

1.1 准备环境依赖
在安装和配置 go-filecoin 的测试节点之前,需要做的准备工作比较繁多,相对复杂,因为小编机器采用的是 macOS,将使用 homebrew 包管理器来安装语言环境。
1.1.1 golang 安装
为啥安装就不解释了 …

# 需要安装大于 v1.11.2 版本的 golang

brew install go

go 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/Cargo

brew install rustc

rustc -V
rustc 1.32.0

cargo -V
cargo 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 性能要求更高。

下载 go-filecoin 源码仓库
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 下,协议实验室也是提倡大家遵守这样的开发规范。
检查并更新 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-7

export CC=gcc-7

安装 gx 包管理工具
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

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
本系列文章赞助合作招募:
本系列文章预计 10+ 篇,欢迎感兴趣的朋友参与,同时将开放赞助渠道,你们的赞助和打赏是支持我业余时间持续写作的动力,我也将尽自己所能,最大化地为阅读者和相关创业公司品牌带来帮助和权益,具体如下:
品牌和赞助商所享受权益

文尾品牌 Logo 展示
一条品牌的推荐语
公众号文章转载权限
为平衡用户体验,每篇仅限 1 家
个人知乎、公众号、简书、头条号等多渠道投放

参与方式
私信我即可,联系方式已在上方联系读者处给出。
示例

星鉴网 是一家专注于 IPFS 生态的垂直媒体,集信息传播,技术推广,应用孵化于一身;感谢星鉴网(ipfsfirst.com)对嘉乐 SOHO 原创内容的支持。
联系作者:
深夜写作,不免有不足之处,欢迎指正和更多讨论,可私信微信公众号:jialesoho,或者加我微信:daijiale6239,如果觉得对您有帮助,可以帮点击好看推广和打赏支持噢,感激不尽!

正文完
 0