filecoin挖矿节点如何自动获取FIL代币,如何自动重启

filecoin挖矿节点如何自动获取FIL代币,如何自动重启

一、如何实现自动获取代币

filecoin测试网节点,需要钱包地址有虚拟FIL,才能创建矿工,才能上传数据,虚拟FIL需要到官方水龙头网站获取http://user.kittyhawk.wtf:9797/,每一小时可获取一次,每次获取耗时10分钟。获取代币实际是一种转账,是``这个地址,向你的账户转账,数额为1000FIL。
然而,目前filecoin网络bug较多,极不稳定,有时几小时不出块,不出块就无法转账,也就无法获取到FIL,所以在向水龙头网站提交钱包地址时,常常遇到发送资金失败的错误

failed to send funds

filecoin挖矿节点如何自动获取FIL代币,如何自动重启_第1张图片
这种情况只能等到filecoin网络正常出块,才能获取到FIL。
其次,在网络正常的时候,也不一定每次都能获取到FIL,经常在设置等待之后,等了10分钟,等到的是网络超时。
有时候我们工作的时候,无法获取到FIL,而晚上休息的时候,filecoin网络却可能很正常,获取FIL非常快。
所以为了尽可能节省时间,最好通过脚本定时自动获取FIL。

有些filecoin节点能上传几TB的数据,因为他们的账户有几万个FIL,比如有一个账户曾经有9万个FIL,这么多FIL,不可能全都手动去获取,只能定时自动获取。

方法一:通过shell脚本死循环去获取

命令如下,就不解释了

#!/usr/bin/env bash

while [[ true ]]; do
  #statements
  cd $HOME/filecoin
  addr=`./go-filecoin address default`
  MESSAGE_CID=`curl -X POST -F "target=${addr}" "http://user.kittyhawk.wtf:9797/tap" | cut -d" " -f4`
  echo $MESSAGE_CID
  ./go-filecoin message wait $MESSAGE_CID
  sleep 3700s
done

每隔3700秒,也就是一小时,自动获取一次FIL。

nohup sh getfil.sh &

把脚本放到后台去自动执行,nohup表示忽略挂起命令,&表示后台执行。

方法二:通过crontab定时器自动执行脚本

获取FIL命令

#!/usr/bin/bash

cd $HOME/filecoin
addr=`./go-filecoin address ls|head -n 1`
MESSAGE_CID=`curl -X POST -F "target=${addr}" "http://user.kittyhawk.wtf:9797/tap" | cut -d" " -f4`
echo $MESSAGE_CID
./go-filecoin message wait $MESSAGE_CID

Mac上自带crontab,可以直接使用,Linux系统上需要自己安装,
安装命令

sudo yum install vixie-cron
sudo yum install crontabs

安装完以后开启crontab服务sudo service crond start
查看定时任务crontab -l,无任务时没有任何输出,有定时任务时,会输出任务列表

编辑任务,输入命令crontab -e,终端会进入vim编辑器,
0 * * * * ~/getfil.sh,表示每小时执行一次getfil.sh脚本,也就是每小时去获取一次FIL。
crontab命令具体用法参考网站https://crontab.guru/every-1-hour。

二、filecoin节点如何实现自动重启

目前filecoin测试网不稳定,节点经常自动挂机,10月10日晚上有超过150个节点都挂掉了。这种情况正式网上线后也可能会遇到,所以一定要通过脚本,实时监控filecoin节点运行状况,在节点挂掉之后,自动重启

#!/usr/bin/env bash

while [[ true ]]; do
  #statements
  #获取节点ID
  processid=$(lsof -i:3453 | awk NR==2 | awk '{print $2}')
  echo $processid
  #如果ID长度为0,说明节点挂掉了,则重启节点
  if [[ -z $processid ]]; then
    #statements
    cd $HOME/filecoin
    nohup ./go-filecoin daemon &
    #等待五分钟,开始挖矿
    #sleep 300s
    #cd $HOME/filecoin && ./go-filecoin mining start
  fi
  #每30分钟检测一次
  sleep 1800s
done

filecoin占用的固定端口是3453,在初始化节点时可以看到

Swarm listening on: /ip4/127.0.0.1/tcp/6000
Swarm listening on: /ip4/172.19.0.8/tcp/6000
12:58:49.459  INFO chain.stor: start loading chain at tipset: { bafy2bzaceaxemeuwqe3cqvlkim3eliiocn7wywualrakyehziuosxa6k4y5fi }, height: 0 store.go:139
12:58:49.461  INFO chain.stor: finished loading 0 tipsets from { bafy2bzaceaxemeuwqe3cqvlkim3eliiocn7wywualrakyehziuosxa6k4y5fi } store.go:183
API server listening on /ip4/127.0.0.1/tcp/3453

API监听端口为3453,查看3453端口,可以查到go-filecoin的进程ID

[hongkong@VM_0_8_centos ~]$ lsof -i:3453
COMMAND     PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
go-fileco 16164 hongkong   24u  IPv4 17720673      0t0  TCP VM_0_8_centos:pscupd (LISTEN)
[hongkong@VM_0_8_centos ~]$ 

每30分钟查看一次3453端口,就可以知道filecoin进程是否挂掉了。
脚本很简单,几分钟就写完了,但是能解放时间,解决很重要的问题。

三、filecoin数据存储在什么地方

节点运行数据

filecoin节点初始化后,会自动生成两个文件夹,两个文件夹中的数据一样,其中一个是备份。

 .filecoin 
 .filecoin-20191013-125603-v002

里面保存了节点运行的数据,包括节点的配置文件,节点的版本,私钥和钱包数据。

api  badger  chain  config.json  deals  keystore  repo.lock  snapshots  version  wallet

客户端传给矿工的数据

创建矿工成功,开始挖矿后,会自动生成一个名为filecoin-的文件夹。
里面有两个文件夹,其中是客户端给矿工节点上传的数据,数据不可直接读取,只能通过filecoin 客户端命令,根据订单CID来读取。
seal文件夹中的数据时已经存储完成,已经密封的数据,staged文件夹中是正在存储的数据

如何更改缓存及矿工存储目录

节点运行数据,也就是filecoin的缓存数据,以及矿工存储的数据,都默认保存在用户目录下,节点部署后不可更改,只能在初始化时指定。

go-filecoin init --sectordir=/home/data/filecoin

使用--sectordir参数,就可以把矿工存储数据放到/home/data/filecoin文件夹下。

filecoin测试网bug很多,部署过程中会遇到各种奇葩的error,都有哪些error,如何解决,请继续关注。

你可能感兴趣的:(区块链)