108

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

 5 years ago
source link: https://www.daijiale.cn/区块链/【filecoin源码仓库全解析】第一章:搭建filecoin测试节点.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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,添加如下图所示内容:

IJVna2i.png!web

记得重启终端,新的环境变量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 [email protected]: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配置如下:

a6nIjav.png!web

如图所示,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过热导致风扇不停,大家可以看一下自己机器的情况....

ERbaium.png!web

构建、安装、测试自编译包

洗了个澡、泡了杯茶,刷了会抖音...

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安装包

zABfa22.png!web

如上图所示,可以在 https://github.com/filecoin-project/go-filecoin/releases 中直接下载官方于2019年2月11日发布的0.0.1版本,将安装包解压至{$gopath}/bin目录下。

  • 好处:绕过了复杂和漫长的源码编译环节。
  • 坏处:由于官方代码仓库在频繁更新,无法获取最新的代码包,实时性滞后。

PS:好奇官方为啥不配置个自动化持续集成...我也是无语了

1.3 验证安装

经过1.2节操作后,全局运行 go-filecoin -help ,出现如下图菜单栏,说明节点已经成功安装。

aYbQjuq.png!web

1.4 初始化节点

测试网络有多种类型:

  • devnet-user 针对普通用户
  • devnet-nightly 针对开发者用户

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

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

j26Fbe2.png!web

1.5 运行Filecoin节点

如下图所示,完成初始化操作后,即可正式启动并运行我们的Filecoin测试节点了:

go-filecoin daemon

Filecoin发现节点的过程是遵循着gossip协议,逐渐向外发散,我们可以通过 go-filecoin swarm peers 来查看所连接对等方的信息和过程。

YZzMJ3n.png!web

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)状态以及个人节点信息:

MVRvmmJ.png!web

n6Bn6bU.png!web

如图所示,刚刚我们自定义命名的Filecoin节点——jialesoho,已经被点亮在Filecoin的全网可视化监控面板中,除此之外,可视化控制台还有许多全网的交易数据,吞吐量,区块信息可供我们查阅和分析...

至此,我们应该可以通过《【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点》的学习,顺利搭建并测试自己的Filecoin节点了,期望帮正在电脑前研究Filecoin源码仓库的你,少走弯路!

下一章,我们将介绍《【Filecoin源码仓库全解析】第二章:如何创建个人钱包,获取FIL Mock代币》

参考文献:

本系列文章赞助合作招募:

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

品牌和赞助商所享受权益

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

参与方式

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

示例

qqeAzyE.jpg!web

星鉴网 是一家专注于IPFS生态的垂直媒体,集信息传播,技术推广,应用孵化于一身;感谢星鉴网(ipfsfirst.com)对嘉乐SOHO原创内容的支持。

联系读者:

深夜写作,不免有不足之处,欢迎指正和更多讨论,可私信微信公众号:jialesoho,或者加我微信:daijiale6239,如果觉得对您有帮助,可以帮点击好看推广和打赏支持噢,感激不尽!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK