【协议学院】Filecoin开发版安装解析

胡飞瞳 · · 2914 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

2019年2月14日,Filecoin 源码上线,同时Devnet开始运行,相信很多小伙伴都按耐不住,纷纷试用起来。但从目前网络的状况来看,在线运行的节点仅80个左右,数量非常少。我想其中一个重要的原因是当前的Devnet更多的是为开发者使用,其安装过程看似简单,但实际上涉及面很广。本着希望更多的开发者更多参与进来,推动产品的成熟和稳定的考虑。本文通过对安装过程进行初步解析,以提供更多的资料,使新进入的开发者少走弯路。

image

安装过程总共可分为以下步骤:

  1. 运行环境准备
  1. 下载 Filecoin 源码
  1. 下载编译相关依赖包
  1. 产生存储证明需要的原始数据
  1. 生成filecoin运行代码

按照此步骤进行完成,你就可以开始运行 filecoin 了。这些步骤中最为复杂的是第三步和第四步。下文中将进行细解。

1. 运行环境准备

首先,当前的Filecoin版本不支持Windows,建议使用Linux或Mac进行测试。

其次,在进行环境准备是考虑一下因素:

  • 一个稳定的速度较高的网络环境,真的有很多东西要下载

  • 一个还不错的主机,因为有大量的编译和运算工作要做,如果你像我一样采用一个用了多年的两核Mac,够你忙一天的。

  • F.Q.,这个不多说,都懂得。

然后,就是考虑软件环境了,Filecoin的软件主要由Go, C/C++ 和 Rust 语言写成,而且,你知道,协议实验室的那些家伙都是些极客,玩的都是新东西,不仅是语言比较新,版本也是比较新的。请准备好以下软件环境:

  • Golang >= v1.11.2

  • Rust >= v1.31.0 和 cargo (Rust的包管理工具)

  • pkg-config (对版本没有特殊要求,我用 0.29.0)

  • Clang 或 gcc >= v7.4.0

注意:C编译器使用clang就可以,也可以使用 gcc。但在Mac上 gcc7及以上的有些版本有一些已知 bugs,希望你运气好不会碰到。我是碰到了,所以我改用clang。

软件的安装这里不细讲,不同的系统有不同的软件包管理工具,自行Google就好了。

2. 下载 Filecoin 源码

这一步非常简单,直接从 github 上克隆搞定:

$ mkdir -p ${GOPATH}/src/github.com/filecoin-project
$ git clone https://github.com/filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoin


3. 下载编译相关依赖包

在Filecoin 的 Readme 中,这一步被包含在以下简单的步骤中:

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

但其实,这里面包含很多步骤,根据你运行主机的配置不同,网络状况不同,你可能需要数小时,让它自动完成所有安装。当然,前提是你运气比较好,前面的所有配置又没有问题的情况下。但我相信,很多人会在这个过程中失败,可能是你运行环境的原因,也可能是网络的原因,抑或是你的VPN暂时不工作。

对于开发者而言,当然希望在有问题的时候获得更多的信息。这里,对这一个安装过程进行分解,解释。大家也可以按照以下所示的步骤逐步执行,确保每一个步骤成功。

1. 安装 gx 和 gx-go

gx 是为 IPFS 系统的包管理工具,由协议实验室的核心开发者 whyrusleeping 开发,在IPFS相关项目中广泛使用,主要用于管理存放于IPFS(当然以后包括Filecoin)网络中的包。此工具当然也可以用于其他项目。

$ cd $ {GOPATH}/src/github.com/filecoin-project/go-filecoin
$ go get -v -u github.com/whyrusleeping/gx
$ go get -v -u github.com/whyrusleeping/gx-go
$ gx install
$ gx-go rewrite

请单步执行以上命令,强烈建议在 go get 时带 -v 参数,这样,你能够掌握详细信息。获取gx 或 gx-go的过程中需要FQ。根据你的配置不同方法不一样,比如我喜欢直接在命令中加入代理设置,就像这样:

$ https_proxy=127.0.0.1:64513 go get -v -u github.com/whyrusleeping/gx

请确保每一步成功,不成功请找出原因并解决掉。

2. 安装 gometalinter

这是 go 语言源码规范检查工具套装,是保证源码质量的辅助工具。

$ go get -v -u github.com/alecthomas/gometalinter
$ gometalinter --install

如果前一步没有问题,这一步一般不会有问题。

3. 安装一系列其他依赖包

依次安装就可以了。

$ go get -v -u github.com/stretchr/testify
$ go get -v -u github.com/xeipuuv/gojsonschema
$ go get -v -u github.com/ipfs/iptb
$ go get -v -u github.com/docker/docker/api/types
$ go get -v -u github.com/docker/docker/api/types/container
$ go get -v -u github.com/docker/docker/client
$ go get -v -u github.com/docker/docker/pkg/stdcopy
$ go get -v -u github.com/ipsn/go-secp256k1
$ go get -v -u github.com/json-iterator/go
$ go get -v -u github.com/prometheus/client_golang/prometheus
$ go get -v -u github.com/prometheus/client_golang/prometheus/promhttp
$ go get -v -u github.com/jstemmer/go-junit-report 
$ go get -v -u github.com/pmezard/go-difflib/difflib

这里,我们看到有几个docker有关的包也被含进来了。真得希望日后Filecoin的发布可以通过容器的方式,这样适用面广,安装也简单。

好了,所有依赖包已经安装完毕,马上开始准备数据。

4. 产生存储证明需要的原始数据

注意:存储证明有关的代码基本上都是采用 rust 编写,因此你会看到 rust 和 C 相关的编译过程。

1.编译安装存储证明模块

这一步需要这个环境变量了: FILECOIN_USE_PRECOMPILED_RUST_PROOFS

为了方便,你可以执行以下命令来设置环境变量。

$ export FILECOIN_USE_PRECOMPILED_RUST_PROOFS=true

其实等于啥都没有关系,只要定义了就行,在以下命令中只检查有没有定义。再其实,第一次安装定义不定义也没有关系,因为没有预编译的 rust_proofs,反正要从头编译。

接下来仍在我们前面步骤所在的目录下执行以下命令:

$ ./scripts/install-rust-proofs.sh

这个脚本主要是编译 proofs/rust-proofs/ 目录下的代码。经过大约140多个警告错误(看来需要优化和改进),经过200多个步骤后,正常退出,表示完成。

2.安装签名模块

$ ./scripts/install-bls-signatures.sh

签名模块大家都懂的,就是证明你是你需要用到的代码部分。这在去中心化的系统中至关重要,不然大家都可以冒名顶替了。

3.产生存储证明需要的数据

这一步是最为耗时的一步,在我的两核+4G内存的Mac上起了六个线程,几乎占据所有内存,运行了将近 3 个小时,简直就是煎熬
image

。当然,相信你们的配置会好很多,一个小时之内可以搞定
image

。运行的时候尽管去洗澡好了,泡个吧回来也行。

$ ./proofs/bin/paramcache

paramcache 是在前面编译证明模块的时候生成的。这里paramcache到底做什么呢?需要那么久?它就是用来产生在数据存储封印(sealing)和存储证明(proving)的时候需要的魔法信息。 这些信息在后面的 zigzag证明(Filecoin的存储证明算法)中要用的。因为很大,所以需要很久。

运行结束后,你可以检查你的以下目录,应该可以看到相关文件如下:

$ pwd
/tmp/filecoin-proof-parameters
$ ls -l
total 4784144
lrwxr-xr-x  1 zxm  wheel          95 Feb 17 14:22 params.out -> v9-zigzag-proof-of-replication-52431242c129794fe51d373ae29953f2ff52abd94c78756e318ce45f3e4946d8
-rw-r--r--  1 zxm  wheel  1670980536 Feb 17 14:21 v9-zigzag-proof-of-replication-52431242c129794fe51d373ae29953f2ff52abd94c78756e318ce45f3e4946d8
-rw-r--r--  1 zxm  wheel   770902584 Feb 17 12:30 v9-zigzag-proof-of-replication-f8b6b5b4f1015da3984944b4aef229b63ce950f65c7f41055a995718a452204d

怎么样,产生两个很大的文件,总共差不多 2.5GB。

注:这两个文件实际上对任何节点都是一样的,完全可以放到网上下载就可以,项目方在以后的版本中也准备这么做。这样以后的安装应该轻松多了。

5. 生成Filecoin的运行代码

最后一步了,激动不?如果前面没问题,这一步非常简单。

$ go run ./build/main.go build

$ go run ./build/main.go install

前一个命令编译,链接,生成初始数据;

后一个命令直接调用 go install 把 go-filecoin 安装至 ${GOPATH}/bin/ 目录。

至此,大功告成!!! 恭喜你!!!

接下来,你就可以开始初始化 filecoin,运行 daemon,查看链接情况,最重要的,挖矿试试看。这些都不在本文范围,敬请参看官方文档。

feitonghu.jpg

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:胡飞瞳

查看原文:【协议学院】Filecoin开发版安装解析

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2914 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传