当前位置: 首页 > 工具软件 > Lotus > 使用案例 >

Lotus 新手运维手册

鲍钊
2023-12-01

常用环境变量
Lotus 数据目录: LOTUS_PATH

export LOTUS_PATH=/gamma/lotus/data

    Copied!

Miner 数据目录:LOTUS_STORAGE_PATH

export LOTUS_STORAGE_PATH=/gamma/lotus-storage-miner/data

    Copied!

IPFS 网关地址: IPFS_GATEWAY, 用于下载复制证明参数加速

export IPFS_GATEWAY=https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/

    Copied!

临时文件夹路径: TMPDIR

export TMPDIR=/cache/tmp

    Copied!

proof 证明参数路径: FIL_PROOFS_PARAMETER_CACHE

export FIL_PROOFS_PARAMETER_CACHE=/gamma/filecoin-proof-parameters

    Copied!

PreCommit1 proof parents 缓存路径(可以减少 56G 内存)

export FIL_PROOFS_PARENT_CACHE=/gamma/filecoin-parents

    Copied!

最大化内存参数: FIL_PROOFS_MAXIMIZE_CACHING

export FIL_PROOFS_MAXIMIZE_CACHING=1

    Copied!

使用 GPU 进行 Precommit2 加速: FIL_PROOFS_USE_GPU_COLUMN_BUILDER

export FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1

    Copied!

提示:

启用 PreCommit1 SDR 多核加速(为每个 PC1 任务绑定共享一组 L3 缓存的一组 CPU),能大大提高 PC1 的密封效率, 我本人使用 3970x 实测结果为 2h17min,并行三个扇区。不过目前官方提示该项加速还不是很稳定。 我本人测试的结果也是这样,依赖于绑核的稳定性,有的时候会绑错,尤其是对于多路 CPU。

FIL_PROOFS_USE_MULTICORE_SDR=1

    Copied!

设置 Rust 日志等级:

optional: Trace,Info,Warn,Debug,Error

export RUST_LOG=Debug

    Copied!

开启详细的报错日志追踪:

RUST_BACKTRACE=1

    Copied!

启用源码编译底层库:

export FFI_BUILD_FROM_SOURCE=1

    Copied!

启动小扇区支持:(一般用于本地测试网络)

export FIL_USE_SMALL_SECTORS=true

    Copied!

设置自定义 GPU 参数:

export BELLMAN_CUSTOM_GPU=“GeForce RTX 2070 SUPER:2560”

    Copied!

#lotus daemon 操作
#1. 查看节点信息

查看本节点所监听的地址:

lotus net listen

/ip4/127.0.0.1/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
/ip4/192.168.1.101/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
/ip6/::1/tcp/46335/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh

查看连接的节点列表:

lotus net peers

    Copied!

手动连接其他节点, 这个在你同步的时候发现自动同步失败,无法获取可用节点的时候特别有用:

usage

lotus net connect <PEER_ADDR>

e.g

lotus net connect /ip4/119.33.53.66/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh

    Copied!

这个在你同步的时候无法正常同步链上数据时候特别有用, 这时可以试下在启动 daemon 的时候禁用自动连接 peers ,然后手动连接到一个正常节点,例如:

lotus daemon --bootstrap=false
lotus net connect <PEER_ADDR>

    Copied!

<PEER_ADDR> 可以是任意一个能够正常同步数据的节点地址。

#2. 查看链同步状态
lotus sync status

等待链同步完成

lotus sync wait # 该命令会实时显示同步状态以及待同步区块高度

    Copied!

如果出现 Error 则说明链同步有问题,如果状态是 completed,则说明链同步已经完成,可以进行其他操作了。 如果同步出错的话,你可以手动强制将你的本地链头区块指向某个高度:

usage

lotus chain sethead --epoch=

e.g

lotus chain sethead --epoch=3960

    Copied!

#3. 修改 mpool 配置

usage

lotus mpool config

e.g

lotus mpool config ‘{“PriorityAddrs”:[],“SizeLimitHigh”:30000,“SizeLimitLow”:20000,“ReplaceByFeeRatio”:1.25,“PruneCooldown”:60000000000,“GasLimitOverestimation”:1.5}’

    Copied!

这个配置非常有用,你可以用来做一些高级的操作。比如,如果你想设置你的节点为某个钱包发送的交易优先打包,你可以这样设置:

usage

lotus mpool config ‘{“PriorityAddrs”:[

],“SizeLimitHigh”:30000,“SizeLimitLow”:20000,“ReplaceByFeeRatio”:1.25,“PruneCooldown”:60000000000,“GasLimitOverestimation”:1.5}’

e.g

lotus mpool config ‘{“PriorityAddrs”:[“t3r3afkf3ooeukknwx45g4t475pduslpkov32nvodv6xzbuliccka7qsax32m34yfbd7q3fwxapfb2isea6dnq”],“SizeLimitHigh”:30000,“SizeLimitLow”:20000,“ReplaceByFeeRatio”:1.25,“PruneCooldown”:60000000000,“GasLimitOverestimation”:1.5}’

    Copied!

#4. 疏通消息,加快上链
你可以使用下面的命令自动计算并增加 gas 费用:

usage

lotus mpool replace --auto

e.g

lotus mpool replace --auto t3xxxxx 1234

    Copied!

注意:

这个命令最好手动调用,如果自动调用的话,最后的结果可能让你支付超高额度的 Gas 费用,有矿工为此付出了惨烈的代价,支付了一笔 700 多 FIL 的手续费。

大多数情况下我们都是手动梳通消息:

lotus mpool replace --gas-feecap= --gas-premium= --gas-limit=

    Copied!

具体操作如下:

首先在区块浏览器找到当前最新的一个区块的 ProveSector 类型的消息(或者跟你要梳通的消息的同类型的消息),记录他们的 Gas Fee Cap( g a s F e e C a p ) 和 G a s U s e d ( gasFeeCap) 和 Gas Used( gasFeeCap)GasUsed(gasUsed)。

找到当前的要替换消息的 Gas Premium($oldGasPremium)。

计算上 replace 消息中的变量的值并替换:

GFC= g a s F e e C a p G P = gasFeeCap GP= gasFeeCapGP=oldGasPremium * 1.252
GL=$gasUsed * 1.1

CID 表示要替换的消息的 cid。

    Copied!

#链快照操作
#1. 导出当前链快照
通常如果你不是做钱包或者交易所的话,你并不需要全节点,你可以直接从官方提供的快照来同步,或者从其他节点导出快照,再导入到当前 daemon. 这样可以节省不少同步的时间。 可以使用以下方式创建完整的 CAR 快照:

usage

lotus chain export

e.g

lotus chain export lotus-chain-2020-12-02.car

    Copied!

通过上面的命令你可以导出一个完整的 lotus chain 快照。不过这个快照比较大,可能超过 100 GB。 所以更常用的方式是使用下面的命令导出一个阉割版的快照, 就是只导出最新的区块,跳过以前的旧消息。

usage

lotus chain export --skip-old-msgs --recent-stateroots=

e.g

lotus chain export --skip-old-msgs --recent-stateroots=2000 lotus_chain_2020_12_02.car

    Copied!

–recent-stateroots 参数指定要导出的状态根数。 --skip-old-msgs 参数表示只导出那些 stateroots 直接引用的区块。

#2. 导入快照
在首次启动 daemon 的时候执行导入快照。

Without verification

lotus daemon --import-snapshot

With verification

lotus daemon --import-chain

    Copied!

如果你希望在快照导入之后就立即退出守护进程,(例如在docker环境中很有用),请在命令中添加 --halt-after-import 标志:

lotus daemon --import-snapshot= --halt-after-import=true

e.g

lotus daemon --import-snapshot=lotus_chain_2020_12_02.car --halt-after-import=true

    Copied!

#3. 压缩区块数据
随着你的节点同步的区块越来越多,占用的磁盘空间也越来越大,而磁盘存的越满,访问的速度就会越慢,最关键是你可能压根不想要这么多区块数据,99% 的 Miner 的需求都是一样的:在保持链同步正常的情况下,区块数据越精简越好,不想多存一个区块。 如果你也是这么想的,那么定期去压缩一下区块数据可能是你的一个刚需。

停止 Lotus 守护进程:

lotus daemon stop

    Copied!

删除 $LOTUS_PATH 路径中 datastore/chain/ 文件夹的内容:

<LOTUS_PATH> 替换为你的 $LOTUS_PATH 变量内容,默认值为 ~/.lotus

rm -rf <LOTUS_PATH>/datastore/chain/*

    Copied!

使用最小快照启动守护进程:

下载最小区块快照

wget https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car -O lotus_chain_minimal.car

或者在本地导出最小区块快照

lotus chain export --skip-old-msgs=true --recent-stateroots=900 lotus_chain_minimal.car
lotus daemon --import-snapshot=lotus_chain_minimal.car

    Copied!

#钱包私钥的备份和删除
导出/导入钱包私钥到文件

usage

lotus wallet export

>

e.g

lotus wallet export f3xxx > wallet.key

    Copied!

导出之后我们需要再导入刚刚导出的私钥,确保备份的私钥能正确导入:

lotus wallet import wallet.key

如果提示 key already exists 则表示备份的私钥是有效的

ERROR: saving to keystore: checking key before put ‘wallet-f3rf5kmk2xenqukta4jkuk3xn5tbwrrylstd7inuzu6hhwtang6jk3edkxqzokbqs7wojbz23pkdadkg5wzmbq’: key already exists

    Copied!

警告

不要把钱包私钥通过任何形式的网络传输,包括但不限于微信,Telegram, 邮箱等方式。建议直接用 U 盘拷贝多份存放在不同的地方。

删除钱包私钥,切记删除私钥之后还要删除文件!!!

usage

lotus wallet delete

e.g

lotus wallet delete f3xxxx

删除钱包之后记得还要把钱包文件删除,文件在 LOTUS_PATH 目录下的 keystore 文件夹里面

所有被删除的钱包地址,都是以 ORZGC43 开头的文件,你把这些文件全删了就 OK 了

rm -rf $LOTUS_PATH/keystore/ORZGC43*

    Copied!

警告

wallet delete 命令并不会删除私钥文件,所以切记在使用命令删除私钥之后还需要手动删除私钥文件,否则一旦文件被盗,对方可以通过私钥文件恢复私钥!!!

#手动下载 proof 参数

首先记得开启京东云的代理

export IPFS_GATEWAY=“https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/”

usage

lotus fetch-params --proving-params <sector_size>

e.g

lotus fetch-params --proving-params 32GiB

    Copied!

#lotus-miner 操作
查看矿工当前信息,包括算算力,山区密封情况

lotus-storage-miner info
Miner: t0109653
Sector Size: 32 GiB
Byte Power: 1.812 TiB / 4.888 PiB (0.0362%)
Actual Power: 1.81 Ti / 4.73 Pi (0.0374%)
Committed: 1.844 TiB
Proving: 1.812 TiB (32 GiB Faulty, 1.69%)
Expected block win rate: 6.4627/day (every 3h42m48s)

Miner Balance: 128.044817705754006786
PreCommit: 0
Locked: 128.043278061722026245
Available: 0.001539644031980541
Worker Balance: 49.947643260499744805
Market (Escrow): 0.000000000000004064
Market (Locked): 0.000000000000004064

Sectors:
Total: 72
Proving: 58
PreCommit1: 12
PreCommit2: 1
SealPreCommit1Failed: 1

    Copied!

这是我们自己测试矿工的 info,目前已经跑了 2 天了。这里大概解释一下各项数据的意思:

Byte Power: 已完成 Proving 的算力
Actual Power: 实际有效算力
Committed: 已完成 Commiting 的算力
32 GiB Faulty: 被标记为 Faulty 扇区总大小,也就是无效算力。
Expected block win rate: 预期竞争出块胜出的概率,6.4627/day 标识平均每天可以出 6 个块。
Miner Balance: 当前挖矿收益(广大矿工最关注的)
Locked: 挖矿收益锁仓的份额(前期的收益几乎全部锁仓了)
其他都是大家一眼都能看懂的,这里就不解释了。

质押扇区

质押一个由随机数据填充的扇区(垃圾数据)

lotus-miner sectors pledge

    Copied!

查看扇区状态

列举所有扇区信息:

lotus-miner sectors list

查看某个扇区的当前状态

lotus-miner sectors status <sector_id>

e.g

lotus-miner sectors status 1

查看 sector 详细日志

lotus-miner sectors status --log 1

    Copied!

修改扇区的状态

usage

lotus-miner sectors update-state --really-do-it=true <sector_id>

e.g

lotus-miner sectors update-state --really-do-it=true 0 FailedUnrecoverable

    Copied!

警告:

update-state 需要谨慎操作,因为操作不当可能会发生一些难以预料的奇怪的错误。

删除扇区

usage

lotus-miner sectors remove --really-do-it=true <sector_id>

e.g

lotus-miner sectors remove --really-do-it=true 1

    Copied!

警告:

扇区一旦删除将不可恢复,请谨慎操作,以免误删。

设置订单价格:

usage

lotus-miner deals set-ask --price= --max-piece-size=

e.g

lotus-miner deals set-ask --price=‘1000000’ --max-piece-size=34359738368

    Copied!

查看 Worker 列表

lotus-miner sealing workers

    Copied!

查看当前 miner 任务调度列表

lotus-miner sealing jobs

    Copied!

如果你发现一个任务长时间没有完成(也许是 worker 掉线了),你可以使用下面的命令取消任务:

终止指定的任务(通常用来处理长时间没有响应的任务)

lotus-miner sealing abort

    Copied!

增加存储路径

设置数据存储路径,该路径用来存储最终密封好的数据

执行该命令可能需要一点时间等待

lotus-miner storage attach --store --init /path/to/persistent_storage

设置密封扇区的存储路径,密封完成之后该路径下的数据会被自动清空,相当于临时目录

执行该命令可能需要一点时间等待

lotus-miner storage attach --seal --init /path/to/fast_cache

    Copied!

以上两个命令都是在启动了 miner 之后才可以执行,是一种动态添加存储路径的方式,非常灵活。 你还可以在命令中添加权重 --weight=10,默认权重是 10。 执行该命令后,可通过以下命令查看存储列表:

lotus-miner storage list

 类似资料: