【技术贡献】Filecoin开发版安装解析

【技术贡献】Filecoin开发版安装解析
2019年2月14日,Filecoin源码上线,同时Devnet开始运行,相信很多小伙伴都按耐不住,纷纷试用起来。但从目前网络的状况来看,在线运行的节点仅80个左右,数量非常少。我想其中一个重要的原因是当前的Devnet更多的是为开发者使用,其安装过程看似简单,但实际上涉及面很广。

本着希望更多的开发者更多参与进来,推动产品的成熟和稳定的考虑。本文通过对安装过程进行初步解析,以提供更多的资料,使新进入的开发者少走弯路。

【技术贡献】Filecoin开发版安装解析 安装过程总共可分为以下步骤:
  1. 运行环境准备
  2. 下载 Filecoin 源码
  3. 下载编译相关依赖包
  4. 产生存储证明需要的原始数据
  5. 生成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/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 个小时,简直就是煎熬【技术贡献】Filecoin开发版安装解析。当然,相信你们的配置会好很多,一个小时之内可以搞定【技术贡献】Filecoin开发版安装解析运行的时候尽管去洗澡好了,泡个吧回来也行。

./proofs/bin/paramcache
paramcache 是在前面编译证明模块的时候生成的。这里paramcache到底做什么呢?需要那么久?它就是用来产生在数据存储封印(sealing)和存储证明(proving)的时候需要的魔法信息【技术贡献】Filecoin开发版安装解析。 这些信息在后面的 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,查看链接情况,最重要的,挖矿试试看。这些都不在本文范围,敬请参看官方文档。
【技术贡献】Filecoin开发版安装解析

【IPFS原力区】

总部位于上海,深耕IPFS社区发展与商业生态建设。

Force系列产品布局IPFS商业应用,贯通视频娱乐、文件共享、浏览器入口、数据加密管理等服务,为企业与个人的使用提供一站式服务。

旗下IPFS原力区是IPFS顶级价值生态社区,聚集了众多技术大咖和IPFS爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,推动IPFS生态的健康发展。

【技术贡献】Filecoin开发版安装解析

原创文章,作者:IPFSforce,如若转载,请注明出处:https://ipfser.org/2019/02/21/filecoin-analysis/

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code