请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $43,403,137,051 总市值 : $245,388,183,835
2019
02/21
11:09
分享
评论
  • 1. 安装依赖软件

    本文是基于filecoin源码编译运行程序,依赖环境项有:golang,rust,pkg-config,Clang/gcc,这几个软件必须安装成功,检测安装成功的命令如下图: 

    (1) Golang版本>=1.11.2;

    (2) Rust版本>1.31.0;

    (3) pkg-config版本不限;

    (4) gcc版本>7.4.0,如果是Clang则版本不限.



    2. 安装配置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

    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 个小时,简直就是煎熬。当然,相信你们的配置会好很多,一个小时之内可以搞定。运行的时候尽管去洗澡好了,泡个吧回来也行。

    $ ./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-filecoin init --devnet-user --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car

    测试网络有多种类型:devnet-user 针对普通用,devnet-nightly 针对开发者用户.

    启动节点服务:

    go-filecoin daemon

    设置/修改节点专属昵称

    go-filecoin config heartbeat.nickname 昵称

    查看连接节点

    go-filecoin swarm peers

    节点ID查看

    go-filecoin id

    与filecoin网络监控建立连接:

    go-filecoin config heartbeat.beatTarget "/dns4/stats-infra.kittyhawk.wtf/tcp/8080/ipfs/QmUWmZnpZb6xFryNDeNU7KcJ1Af5oHy7fB9npU67sseEjR"


    什么是IPFS?

    PFS全称是Inter Planetary File System,直接翻译的话叫做“星际文件系统”,它由Protocol Lab提出,是一种点对点(P2P)的分布式文件系统。不过虽然说它是文件系统,是一种用来存储数据的技术,但更确切的说IPFS是一种传输协议。IPFS将HTTP视为对手,宣传上要对飙HTTP,而HTTP(超文本传输协议)就是一种传输协议,现在大家都在用,这里就不再另行科普。类比HTTP,我们要在网上找到想要的内容,就要输入网址,网址是多是HTTP开头,所以也必须经过它。HTTP通过域名、IP及多个中心服务器的中转,再进行文件的上传下载。HTTP的功绩无可取代,现在我们上网都要依赖于HTTP。但HTTP也存在一些问题,比如性能效率不是非常高,过度依赖于中心服务器与主干网络等等。IPFS与之相比,它是一种多中心化的解决方案,内容寻址不是通过域名、IP,而是通过唯一HASH密钥来进行数据寻找。IPFS是个分布式文件存储系统,文件数据并不储存在一个中心化的服务器中,而是存储在网络上所有符合条件的电脑上。这一点有点像P2P种子下载,比如你下载一部小电影,下载资源来自网络上许许多多也在下载该电影的用户的电脑,而不是从某个电影网站的中心服务器下载。当然,IPFS不止如此,还有很多其他的特性,层次与应用范围并不是P2P下载可相比的。



    各位喜欢IPFS或者对区块链这方面感兴趣的小伙伴们,你们有福利啦!扫描下方二维码,加入我们的IPFS线下沙龙交流群,我们会不定期邀请区块链及IPFS行业专家进行直播讲课,具体的时间和地址请大家进群等候通知!


    更多IPFS最新相关信息请关注微信公众号:区块星球BlockPlanet

主题帖 73 关注 0 粉丝 0
情感指数

链路大数据分析置信度 1.86 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表