如何搭建Filecoin测试网挖矿节点 | 开发者专区系列01
此前,Filecoin开发团队公布了Filecoin开发者测试网源码,意味着专业开发者可以基于源码,参与测试网挖矿。
星际鑫航开发团队经过亲自编译、测试,将整个测试网挖矿节点搭建过程跑通。已经在测试网搭建名称为“xjxhHongKong”、“wwwXJXHio”、“xjxhNick“、“xjxhRock“、在内的的多个节点。
由于项目测试网源码仍不够完善,搭建过程多次入坑,为方便大家其他开发者少走弯路,星际鑫航开发团队推出此搭建教程,介绍如何在计算机上安装和运行 Filecoin 节点。
后续教程也将介绍如何使用您的节点进行 Filecoin 挖矿或存储数据。
搭建节点整个过程分为以下几个步骤:
安装 Filecoin
运行 Filecoin 守护进程
给你的节点命名
激活节点,加入网络统计
获取 Filecoin 测试代币
创建矿工,开始挖矿
安装 Filecoin
Filecoin 目前有两种安装方式,一种是直接下载编译好的可执行文件,另一种是通过编译源码安装。
下载可执行文件
官网有直接编译好的 release 版本 v0.0.1 下载地址为: https://github.com/filecoin-project/go-filecoin/releases
不过遗憾的是,官方编译的0.0.1(写本文时的最新版本)无法正常运行(本人是用 linux 测试)。我自己手动编译了一个版本,基于 commit94b2894473e57c44d60164f89f417694ea3911db。 下载地址为: 百度云盘(如有需要,可后台私聊获取)
手动编译
手动编译需要比较长的时间(本人花了大概一个半小时),根据网络的而定。
安装依赖:go-filecoin 的编译依赖 Go 语言,Rust, cargo, jq 所以在编译之前需要先安装这些依赖.。
第一步你需要搭建 Go 语言编译环境,去 Go 官网下载二进制安装包, https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz,然后解压:
tar xvf go1.11.5.linux-amd64.tar.gz -C /usr/local/
然后配置环境变量 sudo vim /etc/profile, 在文件末尾加上
# golang environment configureexport GOROOT=/usr/local/goexport GOBIN=$GOROOT/binexport GOPKG=$GOROOT/pkg/tool/linux_amd64export GOARCH=amd64export GOOS=linux export GOPATH=/golang/PATH=$PATH:$GOBIN:$GOPKG
这里需要注意的是:假如你没有设置 GOBIN 环境变量,那么你需要把 $GOPATH/bin 加入 PATH 环境路径, 否则可能在待会编译的过程中出现找不到可执行文件的问题。,因为 Go 默认会把第三方工具安装在 $GOBIN 下面, 如果没有配置的话,默认会安装在 $GOPATH/bin 下面。 GOPATH 是你所有 Go 项目的根目录,保存之后重启或者执行 source /ect/profile 使配置生效。
安装 Rust, cargo, 这个非常简单,一条简单的命令就可以
sudo agt-get install curl # 如果你的操作系统已经安装了 curl 了,那么这一步可以跳过curl https://sh.rustup.rs -sSf | sh安装 jq, gcc(官方要求是 v7.4.0 以上,但是我用 v7.3.0 也编译成功了)
sudo apt-get install jqsudo apt-get install gcc下载 go-filecoin 源码并安装 Go 依赖包
由于 Filecoin 项目用来很多第三方的开发包,而这些包通常国内的网络是无法访问的,所以你得保证你的终端是能够翻墙的。
不知道配置终端翻墙的同学请移步 linux 配置终端代理
# 创建项目目录mkdir -p ${GOPATH}/src/github.com/filecoin-project# clone 代码git clone https://github.com/filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoincd ${GOPATH}/src/github.com/filecoin-project/go-filecoin# 切换到测试网络分之git checkout devnet-user# 下载并安装 Go 依赖包FILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build/*.go deps
第一次执行这个脚本的时间会比较长,因为需要生成一个 1.6GB 的参数文件,文件路径为 /tmp/filecoin-proof-parameters。该参数文件主要用于生成复制证明。
开始编译构建,运行测试和安装
# 首先编译成二进制文件go run ./build/*.go build# 安装 go-filecoin 到 ${GOPATH}/bin (在测试之前必须先安装)go run ./build/*.go install# 然后运行测试程序.go run ./build/*.go test# 当然你也可以编译跟测试一起用一条命名运行go run ./build/*.go best
还有一些其他便捷的构建命令:
# 检查代码的格式的正确性go run ./build/*.go lint# 使用覆盖率报告进行测试go run ./build/*.go test -cover# 使用Go的竞争条件检测和警告进行测试(请参阅https://blog.golang.org/race-detector)go run ./build/*.go test -race# Deps,Lint,Build,Test 所有命名打包执行go run ./build/*.go all
执行完 go run ./build/*.go install ,说明已经完成安装。
如果你已经安装了 Filecoin, 只是想更新的话,那就非常简单了:
cd $GOPATH/src/github.com/filecoin-project/go-filecoin git fetch origin devnet-user -fgit checkout devnet-userFILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build/*.go depsgo run ./build/*.go buildgo run ./build/*.go install
本人亲测,更新的时间需要15-20分钟左右。因为更新的时候虽说不需要下载依赖, 也不需要生成 filecoin-proof-parameters 文件,但是它还是需要去检查一下每个依赖包是否有更新,加上“科学上网”的网速实在不算快,所以这个过程没有自己想象的那么短。
开始运行 Filecoin
1.如果你之前有运行过 go-filecoin,那你需要先删除现有 Filecoin 初始化数据:
rm -f ~/.filecoin
2.初始化 Filecoin, 使用 –devnet-user 参数连接到测试主网,–genesisfile 指定获取初始化数据的地址
go-filecoin init --devnet-user --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car
3.启动 go-filecoin 守护进程
go-filecoin daemon
运行之后当前终端是阻塞的,你不能在运行其他命令,你可以使用 Ctrl + C 命令结束进程。当然你可以可以选择在后台运行 Filecoin:
go-filecoin daemon > filecoin.log &
然后你可以使用 tail 命令去输出实时日志
tail -f filecoin.log
启动成功之后应该会返回类似 “My peer ID is {peerID}”, 其中 {peerID} 是以 “Qm” 开头的长 CID 字符串.
注意:第一次启动守护进程的时候可能会慢,filecoin 节点需要于 /tmp/filecoin-proof-parameters 参数文件进行校验。这个文件就是我们在执行 deps 的时候 生成的,如果这些文件丢失或者不下心被删除的话,下次启动 Filecoin 的时候将会被重新创建。重建将会花费接近一个小时的时间,当然,开发人员正在寻找更好的 解决方案。
另外:如果你是开发人员并且希望连接到 nightly devnet (轻节点网络) 而不是 user devnet,则必须将节点配置为使用 small sectors(小扇区), 并使用devnet-nightly tag 进行构建。
构建并安装完成之后使用下面的命令启动守护进程:
env FIL_USE_SMALL_SECTORS=true go-filecoin daemon
4.检查你的连接
go-filecoin swarm peers # 列出跟你连接的所有节点# 输出结
每一行的最后面一项是节点的 ID,你可以使用 go-filecoin ping 命令直接测试你跟某个节点的连接情况
go-filecoin ping QmbHGymRX9HbDXksYpZVaeqUzKBWVdsu92VkLLe4fBQ4sA
上图显示了节点的返回,这其实与你直接用系统的 ping 命令去测试某个 IP 地址与你的通信状况类似。
至此,恭喜你,你已经成功的运行了一个 Filecoin 节点。下面是一个节点的基本结构:
节点运行之后会自动创建一个账号和一个钱包,并立刻验证并同步测试网络上已经生成的区块, 这个时候你会发现你的 CPU 正在满负荷工作(使用 top 命令查看)
给你的节点自定义名称
默认情况下,节点昵称跟节点 ID 相同,是一个 46 的长字符串,Filecoin 允许你给它配置一个人性化的可读的名字。
你打开一个新终端执行:
go-filecoin config heartbeat.nickname "xjxhRock"
新名称立即生效,无需重启。你可以使用以下命令检查配置的名称:
go-filecoin config heartbeat.nickname
不过需要注意的是: 昵称只能包含字母字符(没有数字,空格或其他特殊字符)
激活节点,加入网络统计
Filecoin 官方提供了一些可视化工具来让你更直观的了解 Filecoin 网络上发生的事情: 网络统计 和 区块浏览器。
要在网络统计信息中查看到你的节点,你需要选择流式传输节点的日志。通过执行以下脚本实现:
go-filecoin config heartbeat.beatTarget "/dns4/stats-infra.kittyhawk.wtf/tcp/8080/ipfs/QmUWmZnpZb6xFryNDeNU7KcJ1Af5oHy7fB9npU67sseEjR"
重新启动当前运行的 go-filecoin 守护进程,然后就可以在 Network Stats 观察你的节点与网络的其他节点达成共识。
获取 Filecoin 测试代币(Mock FIL)
在 Filecoin 节点可以参与市场之前,他们需要一些初始的 filecoin token (FIL),矿工需要拿这些 FIL 去抵押,客户需要使用 FIL 发布 ask order.
在早期测试期间,您可以从 Filecoin faucet 免费获取 Mock(虚拟) FIL,我们把 faucet 称之为 “水龙头”。 使用 Mock FIL 可以对市场动态进行初步测试,而无需你付出任何的实际资金。
你可以通过以下步骤轻松获得 Mock FIL (以下所有操作请确保你的 go-filecoin 守护进程是一直运行的):
1.获取你的钱包地址
go-filecoin wallet addrs ls
正常情况下应该返回你的钱包地址,如果你有多个钱包的话,会返回多个地址。钱包地址是一个 41 位的字符串。
2.拿到钱包地址之后你可以到官方提供的 http://user.kittyhawk.wtf:9797 去提交你的钱包地址,提交成功之后会返回一个 {MESSAGE_CID},类似业务回执单编号的东西。凭证可以查到你的处理进度。
Success! Message CID: zDPWYqFD7zqaPvnfmYy2Zr6xnwXrF4QLusdbmCnBTbyFjKJFBtrz
或者你也可以通过命令行去手动提交:
export WALLET_ADDR=`go-filecoin wallet addrs ls` # 获取钱包地址MESSAGE_CID=`curl -X POST -F "target=${WALLET_ADDR}" "http://user.kittyhawk.wtf:9797/tap" | cut -d" " -f4`echo $MESSAGE_CID=
通常情况下,系统会在 30 秒内向你的钱包转入一笔(一般为 1000 枚) FIL。
或者你也可以运行以下命令以等待确认:
go-filecoin message wait ${MESSAGE_CID}
此命令在收到回复之前会一直阻塞,这里有个坑,笔者本来以为 30 秒内能收到 FIL 结果等了大半天, 原因是需要等你的 Filecoin 同步完所有区块之后你才能查询到这笔转账。
3.验证是否到账,只需要查询一下你钱包的余额.
go-filecoin wallet balance ${WALLET_ADDR}
恭喜!你现在已连接到 Filecoin 并且可以开始在 Filecoin 网络上下载或存储数据!
以上即为创建Filecoin测试网节点的过程,参照上述步骤,即可完成。
在创建节点过程,针对一些明显bug,出于程序员的执着,我们向开发团队提交了bug修复建议,并很快得到Filecoin开发团队的回复。
关于Filecoin项目,星际鑫航技术团队将持续深度研究,后续将从技术角度推出系列研究结果。欢迎大家持续关注。
参考文献
Filecoin install
Geting Started
本文来源于互联网:如何搭建Filecoin测试网挖矿节点 | 开发者专区系列01