1编译 lotus 失败: *** No rule to make target '.install-filcrypto'. Stop.
则直接删除
./extern/
目录,然后重新编译:
rm -rf ./extern/
FFI_BUILD_FROM_SOURCE=1 make clean debug
则需要设置
GOPROXY
这个环境变量,然后重新编译:
export GOPROXY=https://goproxy.cn
FFI_BUILD_FROM_SOURCE=1 make debug # 此时不需要执行 clean 操作
3 编译 lotus 失败:server response: not found: module github.com/filecoin-project/lotus/extern/storage-sealing/sealiface: no matching versions for query "latest"
则,更换代码版本吧,这个版本的代码有问题,目前出现这个问题的代码版本是:
v1.4.2-rc1
。
4 运行 lotus 出现崩溃:SIGILL: illegal instruction
这个一般是老机器才会出现的问题,由于老机器不支持
adx
等指令导致的, 解决方法: 编译的时候加上参数
CGO_CFLAGS="-D__BLST_PORTABLE__":
FFI_BUILD_FROM_SOURCE=1 CGO_CFLAGS="-D__BLST_PORTABLE__" make clean debug
5 启动 daemon 失败:xxxxx: genesis in the repo is not the one expected by this version of Lotus!
如果启动 daemon 的时候出现如下所示的错误:
xxxxx: genesis in the repo is not the one expected by this version of Lotus!
: 则建议不要使用这个版本的代码,如果一定要使用,则可以在启动
daemon
之前设置一下环境变量:
export LOTUS_SKIP_GENESIS_CHECK=_yes_
6 daemon 同步失败:Received block with impossibly large height xxx
在测试本地测试网的时候,如果创世节点的代码编译的时候使用的是
Debug
模式,而其它节点的代码编译的时候使用
Release
模式,则在启动新节点的时候,运行完
lotus net connect xxxx
命令的时候,有可能在
daemon
的日志中看到这个错:
ERROR chain chain/sync.go:236 Received block with impossibly large height 197
,看到这个错误之后,新节点后续的操作都不会成功(比如同步节点信息,或者从创世节点发送一些
FIL
到新旷工的钱包等)。 解决的方法就是让新节点的代码也是用
Debug
模式编译。
7 启动创世节点失败:VM.Call failure: Allowance 4096 below MinVerifiedDealSize for add verifier f081 (RetCode=16)
这个错误信息,是因为启动创世节点的时候(搭建本地
2KiB
测试网),所使用的代码的编译模式没有使用
Debug
模式(大概率是因为使用了
Release
模式编译代码)导致的,如下所示:
# 错误信息
WARN vm vm/runtime.go:332 Abortf: Allowance 4096 below MinVerifiedDealSize for add verifier f081
WARN vm vm/runtime.go:145 VM.Call failure: Allowance 4096 below MinVerifiedDealSize for add verifier f081 (RetCode=16):
genesis func failed: make genesis block:
failed to verify presealed data:
failed to create verifier:
doExec apply message failed: Allowance 4096 below MinVerifiedDealSize for add verifier f081 (RetCode=16)
解决方法是使用
Debug
模式重新编译一次代码,然后重新启动创世节点。
8 查看钱包列表出现 Warn:error in RPC call to 'Filecoin.WalletDefaultAddress': failed to get default key: xxx key info not found
这不是一个 Error,其实可以不用管它,消除这个
Warn
的方法也很简单,因为这个警告的意思是指:用户没有设置默认钱包,可能是因为用户在导入创世钱包的时候
./lotus wallet import xxx
没有指定
--as-default
参数,或者是导入之后没有执行
./lotus wallet set-default xxx
设置默认钱包(只要有默认钱包就不会报这个警告了)。 所以,消除这个警告的方法就是在导入钱包的时候加上
--as-default
参数,或者在导入钱包之后执行
./lotus wallet set-default xxx
设置默认钱包即可。
9 查看Miner 信息:ERROR: could not get API info: could not get api endpoint: API not running (no endpoint)
如果是在执行
./lotus-miner xxx
的时候看到这个错误,则说明你的
miner
还没有启动,或者是
miner
的默认目录不是
~/.lotusminer/
,而你执行名的这边(执行命令所在的终端)没有检测到你的
miner
所使用的目录。比如,
miner
那边运行的时候设置了
export LOTUS_STORAGE_PATH=/lotusminer
,而执行命令这边没有检测到
LOTUS_STORAGE_PATH
这个环境变量。 如果是在执行
./lotus xxx
的时候看到这个错误,则原理和
miner
类似。
10 lotus 编译错误:/usr/bin/ld: cannot find -lhwloc
如果在编译过程中遇到这个错误,则说明你的系统中没有安装
hwloc
相关的库: 解决方法,安装
hwloc
相关的库,然后再重新编译
lotus
:
sudo apt get install hwloc libhwloc-dev
11 miner 的日志中显示 drand 错误:failed getting beacon entry:
错误信息(drand:distributed random):
ERROR miner miner/miner.go:208
failed getting beacon entry: drand failed Get request: no valid clients - doing request:
Get "https://api3.drand.sh/public/643563": context deadline exceeded - doing request:
Get "https://api2.drand.sh/public/643563": context deadline exceeded - doing request:
Get "https://drand.cloudflare.com/public/643563": context deadline exceeded - doing request:
Get "https://api.drand.sh/public/643563": context deadline exceeded
这个错误一般都是你的机器无法联网导致的,或者网络不稳定等,导致
miner
无法访问到分布式随机数服务器,而且,如果一直无法访问的话,
miner
的 log 日志中会不断的输出这个错误信息,如果
miner
的 log 日志中已经暂定输出这个错误信息,则说明已经恢复正常(
WaitSeed
阶段需要正确获得
drand
信息才能继续)。
12 lotus 的日志中显示错误:block was from the future:
错误信息如下所示:
2021-03-29T23:03:52.060+0800 ERROR chain chain/sync.go:1500 failed to validate tipset: validating block bafy2bzacedn4somb5xy634kgn56tnmrhs7yg7lje4u2iqpod6d74yvndvwdgu:
github.com/filecoin-project/lotus/chain.(*Syncer).ValidateTipSet.func1
/home/ml/git2/lotus/chain/sync.go:620
- block was from the future (now=1617030232, blk=1617030234):
github.com/filecoin-project/lotus/chain.(*Syncer).ValidateBlock
/home/ml/git2/lotus/chain/sync.go:743
- temporal error
这个错误信息一般会持续的输出,原因是你的机器的时间和其它机器的时间不一致导致的,你可以通过更新机器时间来解决这个问题,具体方式如下:
sudo ntpdate ntp.aliyun.com
同步好时间之后,重启
daemon
和
miner
一般就可以了。
13 Worker 启动失败:API not running (no endpoint)
错误信息如下所示:
Connecting to miner API... (could not get API info: could not get api endpoint: API not running (no endpoint))
这个错误信息是因为你的
worker
机器中没有配置
miner
的
API token
,解决方法是在把
miner的地址配置上。