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

栏目: 数据库 · 发布时间: 5年前

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

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

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

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 个小时,简直就是煎熬

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

image

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

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

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,查看链接情况,最重要的,挖矿试试看。这些都不在本文范围,敬请参看官方文档。

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

feitonghu.jpg


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

One Click

One Click

Richard L. Brandt / Portfolio Hardcover / 2011-10-27 / 25.95

An insightful look at how Amazon really works and how its founder and CEO makes it happen. Amazon's business model is deceptively simple: make online shopping so easy and convenient that customers ......一起来看看 《One Click》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具