1 daemon 同步失败:Received block with impossibly large height xxx
在测试本地测试网的时候,如果创世节点的代码编译的时候使用的是 Debug 模式,而其它节点的代码编译的时候使用 Release 模式,则在启动新节点的时候,运行完 epik net connect xxxx 命令的时候,有可能在 daemon 的日志中看到这个错: ERROR chain chain/sync.go:236 Received block with impossibly large height 197,看到这个错误之后,新节点后续的操作都不会成功(比如同步节点信息,或者从创世节点发送一些 gas 到新旷工的钱包等)。
解决的方法就是让新节点的代码也是用 Debug 模式编译。
2 启动创世节点失败: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 模式重新编译一次代码,然后重新启动创世节点。
3 查看Miner 信息:ERROR: could not get API info: could not get api endpoint: API not running (no endpoint)
如果是在执行 epik-miner xxx 的时候看到这个错误,则说明你的 miner 还没有启动,或者是 miner 的默认目录不是 ~/.epikminer/,而你执行名的这边(执行命令所在的终端)没有检测到你的 miner 所使用的目录。比如, miner 那边运行的时候设置了 export EPIK_STORAGE_PATH=/.epikminer,而执行命令这边没有检测到 EPIK_STORAGE_PATH 这个环境变量。
如果是在执行 epik xxx 的时候看到这个错误,则原理和 miner 类似。
4 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 信息才能继续)。
5 epik daemon 的日志中显示错误: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/epik-project/epik/chain.(\*Syncer).ValidateTipSet.func1
/home/ml/git2/epik/chain/sync.go:620
block was from the future (now=1617030232, blk=1617030234):
github.com/epik-project/epik/chain.(*Syncer).ValidateBlock
/home/ml/git2/epik/chain/sync.go:743
这个错误信息一般会持续的输出,原因是你的机器的时间和其它机器的时间不一致导致的,你可以通过更新机器时间来解决这个问题,具体方式如下:
sudo ntpdate ntp.aliyun.com
同步好时间之后,重启 daemon 和 miner 一般就可以了。
6 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的地址配置上。