Lotus 网络升级 v1.10.0 - 将大大降低质押 Gas 成本
阳光劫匪
奇怪的动物会被人保护起来,但是奇怪的人确通常都会被大家所排斥。
北京时间 2021年06月24日,Lotus Github 仓库发布了 v1.10.0 Release (opens new window) 版本。
如图所示,这是一个强制更新版本,更新高度为 892800
,UTC 时间 2021-06-30 22:00
,北京时间为: 2021-07-01 06:00
,主要更新为引入 Filecoin network v13 (opens new window),代号为 HyperDrive 升级。
本文将对本次网络升级进行解读,尤其重点解读大家可能比较关注的关于扇区批量提交的新的 API 的使用。
首先咱们先看看本次更新的主要内容,其实主要就是新增了几个重要 FIP 的实现(上面截图上面有写明)。
- FIP-0008: 增加 PreCommitSector 消息批量提交的方法(PreCommitSector 消息聚合)
- FIP-0011: 删除报告共识错误的奖励
- FIP-0012: DataCap 充值 FIL(之前 DataCap 是一次性分配的,容量用完了要新增地址) + 客户端地址
- FIP-0013: 添加 ProveCommitSectorAggregated 方法(ProveCommitSector 消息聚合)以减少链上拥堵
- FIP-0015: 重新启用 FIP-0009(从 BaseFee 销毁中免除 Window PoSts,Window PoSts 消息手续费不再收 BaseFee 影响)
具体详情大家可以到官方 GitHib filecoin-project/FIPS (opens new window) 项目中查看原型,也可以看下我之前的一篇博客 矿工应该了解的几个 Filecoin 重要的 FIP。
接下来咱们重点讲一下本次的 FIP-0008
和 FIP-0013
实现,因为这个是跟矿工运维人员密切相关的内容。
备注:本文所用到的代码为 filecoin-project/lotus (opens new window) 项目 的
Master
分支 CommitID 为:715176698ffa1ac089963765d65a2dd355364114
# 1. 消息聚合配置
# Sealing 新增配置
[Sealing]
FinalizeEarly = false
BatchPreCommits = true
MaxPreCommitBatch = 256
MinPreCommitBatch = 1
PreCommitBatchWait = "24h0m0s"
PreCommitBatchSlack = "3h0m0s"
AggregateCommits = true
MinCommitBatch = 4
MaxCommitBatch = 819
CommitBatchWait = "24h0m0s"
CommitBatchSlack = "1h0m0s"
TerminateBatchMax = 100
TerminateBatchMin = 1
TerminateBatchWait = "5m0s"
参数名称 | 参数说明 |
---|---|
FinalizeEarly | 是否提前发起 FinalizeSector 操作,也就是在 C2 上链之前就执行 FinalizeSector 操作。 |
BatchPreCommits | 是否启用 PreCommitSector 消息聚合功能 |
MaxPreCommitBatch | 单条 SubmitPreCommitBatch 消息最多聚合 PreCommitSector 消息条数,注意: 每个矿工每年聚合消息的数量最多不得超过 1EiB 的算力。 |
MinPreCommitBatch | 单条 SubmitPreCommitBatch 消息最少聚合 PreCommitSector 消息条数 |
PreCommitBatchWait | SubmitPreCommitBatch 消息最大等待时长,超过时间自动提交 |
PreCommitBatchSlack | SubmitPreCommitBatch 强制提交缓存时间,默认 3h,也就是说如果当前 SubmitPreCommitBatch 聚合消息中有扇区在 3 小时内过期的话就立即强制提交。该值不得超过 31.5h |
AggregateCommits | 是否启动 ProveCommitSector 消息聚合功能 |
MinCommitBatch | 单条 SubmitCommitAggregate 消息少多聚合 ProveCommitSector 消息条数 |
MaxCommitBatch | 单条 SubmitCommitAggregate 消息最多聚合 ProveCommitSector 消息条数 |
CommitBatchWait | SubmitCommitAggregate 消息最大等待时长,超过时间自动提交。最大值为 30 天 |
CommitBatchSlack | SubmitCommitAggregate 强制提交缓冲时间,默认 1h,也就是说如果当前 SubmitCommitAggregate 聚合消息中有扇区/订单在 1 小时内过期的话就立即强制提交。该值设置的越小,消息提交的失败率越高。 |
TerminateBatchMax | 批量终止扇区聚合消息最多条数 |
TerminateBatchMin | 批量终止扇区聚合消息最少条数 |
TerminateBatchWait | 批量终止扇区聚合消息最长等待时间,超时自动提交 |
# Gas Fee 新增配置
[Fees]
[Fees.MaxPreCommitBatchGasFee]
Base = "0.025 FIL"
PerSector = "0.025 FIL"
[Fees.MaxCommitBatchGasFee]
Base = "0.05 FIL"
PerSector = "0.05 FIL"
这些配置都非常容易看懂,就不解释了。
另外:配置的定义的源码分别在 lotus 项目中
node/config/def.go
(opens new window) 以及specs-actors
项目中的policy.go
(opens new window) 文件中,有兴趣的同学可以去看下源码。
# 2. 消息聚合操作
由于线上的网络目前还不支持新代码,因此我们在本地搭建 dev-net
测试。由于篇幅原因,怎么搭建本地测试网络这里就略过了,
如果不知道怎么搭建本地网络的,请参考官方文档 Run a Filecoin local dev-net (opens new window)。
批量操作的命令在
lotus-miner sectors batching
子命令中:查看
lotus-miner info
的时候会多出两种状态的扇区SubmitPreCommitBatch
和SubmitCommitAggregate
查看
SubmitPreCommitBatch
和SubmitCommitAggregate
消息sector list 里面也可以看到:
默认
SubmitPreCommitBatch
和SubmitCommitAggregate
消息是要累积到最大扇区数或者有扇区过期的时候才会提交的,你也可以通过下面的命令手动提交:提交
SubmitPreCommitBatch
消息:提交
SubmitCommitAggregate
消息:
# 参考阅读
- https://github.com/filecoin-project/lotus/releases/tag/v1.10.0
- https://github.com/filecoin-project/community/discussions/74#discussioncomment-885578
本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01