基础命令
启动
lotus daemon > daemon.log
创建完整的 CAR 快照
lotus chain export <filename>
命令你可以导出一个完整的 lotus chain 快照。不过这个快照比较大,可能超过 100 GB。你也可以只导出最新的区块,跳过以前的旧消息。–recent-stateroots 参数指定要导出的状态根数。 --skip-old-msgs 参数表示只导出那些 stateroots 直接引用的区块。
# usage
lotus chain export --skip-old-msgs --recent-stateroots=<stateroots-num> <filename>
# e.g
lotus chain export --skip-old-msgs --recent-stateroots=2000 lotus-chain.car
在首次启动 daemon 的时候执行导入快照
# 跳过验证
lotus daemon --import-snapshot <filename>
# 包含验证
lotus daemon --import-chain <filename>
# 如果你希望在快照导入之后就立即退出守护进程,(例如在docker环境中很有用),请在命令中添加 --halt-after-import 标志
lotus daemon --import-snapshot --halt-after-import <filename>
初始化矿工
# 等 lotus daemon 完成区块同步,检查区块是否同步完成
# 该命令会显示当前同步多少区块了,还有多少没有同步完成,以及你现在的同步速度。
# 如果没有同步完成,会一直处于阻塞状态,等待同步完成了该命令才会退出。
lotus sync wait
重写 lotus-miner
脚本
vim /usr/local/bin/lotus-miner
FIL_PROOFS_PARAMETER_CACHE=/gamma/filecoin-proof-parameters \ # proof 参数路径
IPFS_GATEWAY=https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/
LOTUS_PATH=/data/lotus \ # daemon 数据根路径
LOTUS_MINER_PATH=/data/lotus-miner \ # miner 数据存储跟路径
FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1 \ # 启用 GPU加速 COLUMN hash 计算
FIL_PROOFS_USE_GPU_TREE_BUILDER=1 \ # 启用 GPU 构造 Merkle 树
RUST_LOG=Trace \
FIL_PROOFS_MAXIMIZE_CACHING=1 \
/opt/lotus/lotus-miner $*
创建钱包
lotus wallet new bls
备份钱包
lotus wallet export {钱包地址}
创建矿工
# usage
lotus-miner init --owner={钱包地址} --sector-size=<val>
# e.g
lotus-miner init --owner={钱包地址} --sector-size=32GiB
修改 Miner 配置
miner 的配置文档在 $LOTUS_MINER_PATH/config.toml
,如果你是跑单节点的话,那么无需修改配置文档,但是如果你是需要跑集群的话, 那么你需要修改下面几个地方:
修改 API 连接配置,主要用于 worker 连接 miner
# e.g
[API]
ListenAddress = "/ip4/{miner 的内网 IP 地址}/tcp/2345/http"
RemoteListenAddress = "{miner 的内网 IP 地址}:2345"
修改 [Storage] 选项,将密封相关的任务全部分配给 worker 去做
[Storage]
# ParallelFetchLimit = 10
AllowAddPiece = false
AllowPreCommit1 = false
AllowPreCommit2 = false
AllowCommit = false
# AllowUnseal = true
使用远程 lotus daemon
配置你的 lotus daemon config.toml 文件
# e.g
[API]
ListenAddress = "/ip4/{lotus daemon 的内网 IP 地址}/tcp/1234/http"
RemoteListenAddress = "{lotus daemon 的内网 IP 地址}:1234"
同时需要拷贝 lotus dameon 的 api 和 token 文件到 miner 机器的 $LOTUS_PATH 目录下
启动 lotus-miner
lotus-miner run
启动 lotus-worker
同样的,我们也需要重写 lotus-worker
脚本
FIL_PROOFS_PARAMETER_CACHE=/gamma/filecoin-proof-parameters \ # proof 参数路径
IPFS_GATEWAY=https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/
LOTUS_WORKER_PATH=/data/lotus-worker \ # worker 数据存储目录
LOTUS_MINER_PATH=/data/lotus-miner \ # 保存 miner api 和 token 的目录
FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1 \ # 启用 GPU加速 COLUMN hash 计算
FIL_PROOFS_USE_GPU_TREE_BUILDER=1 \ # 启用 GPU 构造 Merkle 树
RUST_LOG=Trace \
FIL_PROOFS_MAXIMIZE_CACHING=1 \
/opt/lotus/lotus-worker $*
- 拷贝 miner 的 api 和 token 文件到
$LOTUS_MINER_PATH
目录下。 - 启动 worker 程序,可以根据传入不同的参数来定义 worker 的类型。
(1) 启动一个只接 P1 任务的 worker
lotus-worker run --listen={worker 的内网 IP 地址}:2345 --precommit1=true --precommit2=false -commit=false
(2) 启动一个可以同时接 P1 和 P2 任务的 worker
lotus-worker run --listen={worker 的内网 IP 地址}:2345 --precommit1=true --precommit2=true -commit=false
(3) 启动一个只接 C2 任务的 worker
lotus-worker run --listen={worker 的内网 IP 地址}:2345 --precommit1=false --precommit2=false -commit=true
worker 启动之后会连接到 miner 领取任务
查看已经连接到 miner 的 worker 列表
lotus-miner sealing workers
质押扇区,启动挖矿
lotus-miner sectors pledge # 质押一个随机数据的扇区,开始密封
查询当前集群的任务分配情况
lotus-miner sealing jobs