# damocles-manager 的配置解析
damocles-manager
是与链交互、维持扇区的主体,我们来了解一下它的配置文件结构和配置方式。
在完成初始化之后,我们可以得到一份原始的配置内容:
# Default config:
[Common]
[Common.API]
#Gateway = ["/ip4/{api_host}/tcp/{api_port}"]
#Token = "{some token}"
#ChainEventInterval = "1m0s"
#Chain = "/ip4/{api_host}/tcp/{api_port}"
#Messager = "/ip4/{api_host}/tcp/{api_port}"
#Market = "/ip4/{api_host}/tcp/{api_port}"
#
[[Common.PieceStores]]
#Name = "{store_name}"
#Path = "{store_path}"
#ReadOnly = false
#Plugin = ""
#PluginName = "s3store"
[Common.PieceStores.Meta]
#SomeKey = "SomeValue"
#
[Common.PieceStorePreset]
#Strict = false
#ReadOnly = false
#Weight = 1
#AllowMiners = [1, 2]
#DenyMiners = [3, 4]
#StorageConfigPath = "/optional/path/to/your/storage.json"
[Common.PieceStorePreset.Meta]
#SomeKey = "SomeValue"
#
[[Common.PersistStores]]
#Name = "{store_name}"
#Path = "{store_path}"
#Strict = false
#ReadOnly = false
#Weight = 0
#AllowMiners = [1, 2]
#DenyMiners = [3, 4]
#Plugin = ""
#PluginName = "s3store"
[Common.PersistStores.Meta]
#SomeKey = "SomeValue"
[Common.DB]
#Driver = "badger"
[Common.DB.Badger]
#BaseDir = ""
[Common.Proving]
#ParallelCheckLimit = 128
#SingleCheckTimeout = "10m0s"
#PartitionCheckTimeout = "20m0s"
[Common.Proving.WorkerProver]
JobMaxTry = 2
HeartbeatTimeout = "15s"
JobLifetime = "25h0m0s"
[[Miners]]
#Actor = 10086
[Miners.Sector]
#InitNumber = 0
#MinNumber = 10
#MaxNumber = 1000000
#Enabled = true
#EnableDeals = false
#LifetimeDays = 540
#Verbose = false
[Miners.SnapUp]
#Enabled = false
#Sender = "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
#SendFund = true
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
#CleanupCCData = true
#MessageConfidence = 15
#ReleaseConfidence = 30
[Miners.SnapUp.Retry]
#MaxAttempts = 10
#PollInterval = "3m0s"
#APIFailureWait = "3m0s"
#LocalFailureWait = "3m0s"
[Miners.Commitment]
#Confidence = 10
[Miners.Commitment.Pre]
#Sender = "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
#SendFund = true
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.Commitment.Pre.Batch]
#BatchCommitAboveBaseFee = "0"
#Threshold = 16
#MaxWait = "1h0m0s"
#CheckInterval = "1m0s"
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.Commitment.Prove]
#Sender = "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
#SendFund = true
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.Commitment.Prove.Batch]
#BatchCommitAboveBaseFee = "0"
#Threshold = 16
#MaxWait = "1h0m0s"
#CheckInterval = "1m0s"
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.Commitment.Terminate]
#Sender = "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
#SendFund = true
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.Commitment.Terminate.Batch]
#BatchCommitAboveBaseFee = "0"
#Threshold = 5
#MaxWait = "1h0m0s"
#CheckInterval = "1m0s"
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
[Miners.PoSt]
#Sender = "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
#Enabled = true
#StrictCheck = true
#Parallel = false
#GasOverEstimation = 1.2
#GasOverPremium = 0.0
#GasFeeCap = "5 nanoFIL"
#MaxFeeCap = ""
#Confidence = 10
#SubmitConfidence = 0
#ChallengeConfidence = 0
#MaxRecoverSectorLimit = 0
#MaxPartitionsPerPoStMessage = 0
#MaxPartitionsPerRecoveryMessage = 0
[Miners.Proof]
#Enabled = false
[Miners.Sealing]
#SealingEpochDuration = 0
#UseSyntheticPoRep = false
我们将逐一分析其中的可配置项。
# [Common]
Common
是公共配置,又分成四个子配置项:
# [Common.API]
Common.API
是接口相关的配置,其内容包含:
[Common.API]
# 网关服务地址,必填项,字符串类型
# 根据所使用的服务实际情况填写
# 对于每一条信息,如果使用了合法的 "{token}:{multiaddr}" 格式,构造客户端时将使用本字段中提取的 token,否则使用通用 sophon-auth 产生的 token
Gateway = ["/ip4/{api_host}/tcp/{api_port}"]
# 链服务信息,可选项,字符串类型
# 根据所使用的服务实际情况填写
# 如果使用了合法的 "{token}:{multiaddr}" 格式,构造客户端时将使用本字段中提取的 token,否则使用通用 sophon-auth 产生的 token
# 如果不填写,会默认使用 Gateway 的地址和 token 作为链服务的入口
Chain = "/ip4/{api_host}/tcp/{api_port}"
# 消息服务信息,可选项,字符串类型
# 根据所使用的服务实际情况填写
# 如果使用了合法的 "{token}:{multiaddr}" 格式,构造客户端时将使用本字段中提取的 token,否则使用通用 sophon-auth 产生的 token
# 如果不填写,会默认使用 Gateway 的地址和 token 作为消息服务的入口
Messager = "/ip4/{api_host}/tcp/{api_port}"
# 市场服务信息,可选项,字符串类型
# 根据所使用的服务实际情况填写
# 如果使用了合法的 "{token}:{multiaddr}" 格式,构造客户端时将使用本字段中提取的 token,否则使用通用 sophon-auth 产生的 token
# 如果不填写,会默认使用 Gateway 的地址和 token 作为消息服务的入口
Market = "/ip4/{api_host}/tcp/{api_port}"
# 服务 sophon-auth 产生的 token,必填项,字符串类型
# 根据所使用的服务实际情况填写
Token = "{some token}"
# 侦测链高度变化的间隔时间,选填项,时间类型
# 默认值为 1min
#ChainEventInterval = "1m0s"
# [Common.Plugins]
Common.Plugins
配置 damocles-manager 的插件存放路径
[Common.Plugins]
# 插件存放路径,选填项,字符串类型
# 默认为空字符串,表示不加载任何插件
# 建议使用绝对路径
Dir = ""
# [[Common.PieceStores]]
Common.PieceStores
是用于配置本地订单 piece
数据的选项。当存在可用的离线存储时,可以配置此项,避免通过公网获取订单的piece
数据。
每一个本地存储目录对应一个 Common.PieceStores
配置块。
# 基础配置范例
[[Common.PieceStores]]
# 名称,选填项,字符串类型
# 默认为路径对应的绝对路径
#Name = "remote-store1"
# 路径,必填项,字符串类型
Path = "/mnt/mass/piece1"
# 插件路径,选填项,字符串类型
# 默认为 null
# 如果希望使用自定义存储方案,可以通过编写符合要求的 golang plugin,并在此设置。
# 已过时,请使用 PluginName 代替
#Plugin = "path/to/objstore-plugin"
# 插件名称,选填项,字符串类型
# 默认为空字符串
# 如果希望使用自定义存储方案,可以通过编写符合要求的 golang plugin,并在此设置。
#PluginName = "s3store"
# 元信息,选填项,字典类型
# 内部值为 Key = "Value" 的格式
# 默认值为 null
# 用于支持不同类型存储方案
[Common.PieceStores.Meta]
#SomeKey = "SomeValue"
#
# [Common.PieceStorePreset]
PersistStore
指的是扇区持久化数据存储。与之对应的是 damocles-worker
中的 attached
概念。
而 PieceStorePreset
为全局的所有 PersistStore
配置,提供了一套可自定义的预设值,与后一章节中的 [[Common.PersistStores]]
配置项相呼应。合理利用 PieceStorePreset
可以大大简化 [[Common.PersistStores]]
的配置。
同时,Damocles-Manager
还支持 lotus
风格的存储配置文件(例如 lotus-miner
repo 下默认生成的 storage.json
文件)。Damocles-Manager
会根据 PieceStorePreset
为该配置文件下的每一个路径在内存中生成一个对应的 PersistStore
配置项。
# 基础配置范例
[Common.PieceStorePreset]
# 只读,选填项,布尔类型
# 默认值为 false
# 自 v0.4.0 起,持久化存储分配逻辑转到 damocles-manager 上
# 可通过此配置设置存储是否可以继续写入
ReadOnly = false
# 可选项,布尔类型
# 默认 false
# 是否验证`Path`路径是否为通常文件,true 时,`Path`为软连接等非通常文件时会报错
Strict = false
# 权重,选填项,数字类型
# 默认值为 1
# 当填写值为 0 时,等效于 1
# 自 v0.4.0 起,持久化存储分配逻辑转到 damocles-manager 上
# 可通过此配置设置多个持久化存储之间的权重配比
# 每个持久化存储被选中的概率为 `weight / sum`, `sum` 是所有可用的持久化存储权重的和
# 例:配置 3 个 持久化存储,weight 分别为 2, 1, 1。则被选中的概率分别为 50%, 25%, 25%
Weight = 1
# 允许进行分配的矿工号列表,选填项,数字数组类型
# 默认为 null
# 当不设置时,视为允许全部矿工号;当设置时,则相当于白名单,仅允许分配给列出的矿工号
# 如果一个矿工号同时出现在 AllowMiners 和 DenyMiners 中时,DenyMiners 优先生效,即视为拒绝
AllowMiners = [1, 2]
# 拒绝进行分配的矿工号列表,选填项,数字数组类型
# 默认为 null
# 当不设置时,视为不拒绝任何矿工号;当设置时,则相当于黑名单,将拒绝为列出的矿工号分配
# 如果一个矿工号同时出现在 AllowMiners 和 DenyMiners 中时,DenyMiners 优先生效,即视为拒绝
DenyMiners = [3, 4]
# lotus 风格的存储配置文件的路径,选填项,字符串类型
# 默认为空字符串
# 如果只是希望简单地沿用 lotus 的存储路径配置,可以选择填写此项
# 但是如果希望更加深入地对每个存储路径进行细致的设置,建议使用 `[[Common.PersistStores]]` 配置项
StorageConfigPath = "/optional/path/to/your/storage.json"
# 元信息,选填项,字典类型
# 内部值为 Key = "Value" 的格式
# 默认值为 null
# 用于支持不同类型存储方案的预备,目前没有任何作用
[Common.PersistStores.Meta]
#SomeKey = "SomeValue"
#
- storage.json
{
"StoragePaths": [
{
"Name": "persist",
"Path": "/root/persist"
}
]
}
其中 Name
属性可以省略,省略时默认使用 Path
属性的值作为 Name
。
# [[Common.PersistStores]]
Common.PersistStores
用于配置扇区持久化数据存储。与之对应的是 damocles-worker
中的 attached
概念。
与 Common.PieceStores
类似,每一个持久化存储目录对应一个 Common.PersistStores
配置块。
# 基础配置范例
[[Common.PersistStores]]
# 名称,选填项,字符串类型
## 默认为路径对应的绝对路径
#Name = "remote-store1"
# 路径,必填项,字符串类型
# 建议使用绝对路径
Path = "/mnt/remote/10.0.0.14/store"
# 只读,选填项,布尔类型
# 默认值为 false
# 自 v0.4.0 起,持久化存储分配逻辑转到 damocles-manager 上
# 可通过此配置设置存储是否可以继续写入
#ReadOnly = false
# 可选项,布尔类型
# 默认 false
# 是否验证`Path`路径是否为通常文件,true 时,`Path`为软连接等非通常文件时会报错
#Strict = false
# 权重,选填项,数字类型
# 默认值为 1
# 当填写值为 0 时,等效于 1
# 自 v0.4.0 起,持久化存储分配逻辑转到 damocles-manager 上
# 可通过此配置设置多个持久化存储之间的权重配比
# 每个持久化存储被选中的概率为 `weight / sum`, `sum` 是所有可用的持久化存储权重的和
# 例:配置 3 个 持久化存储,weight 分别为 2, 1, 1。则被选中的概率分别为 50%, 25%, 25%
#Weight = 1
# 插件路径,选填项,字符串类型
# 默认为 null
# 如果希望使用自定义存储方案,可以通过编写符合要求的 golang plugin,并在此设置。
# 已过时,请使用 PluginName 代替
#Plugin = "path/to/objstore-plugin"
# 允许进行分配的矿工号列表,选填项,数字数组类型
# 默认为 null
# 当不设置时,视为允许全部矿工号;当设置时,则相当于白名单,仅允许分配给列出的矿工号
# 如果一个矿工号同时出现在 AllowMiners 和 DenyMiners 中时,DenyMiners 优先生效,即视为拒绝
#AllowMiners = [1, 2]
# 拒绝进行分配的矿工号列表,选填项,数字数组类型
# 默认为 null
# 当不设置时,视为不拒绝任何矿工号;当设置时,则相当于黑名单,将拒绝为列出的矿工号分配
# 如果一个矿工号同时出现在 AllowMiners 和 DenyMiners 中时,DenyMiners 优先生效,即视为拒绝
#DenyMiners = [3, 4]
# 插件路径,选填项,字符串类型
# 默认为空字符串
# 如果希望使用自定义存储方案,可以通过编写符合要求的 golang plugin,并在此设置。
#PluginName = "s3store"
# 元信息,选填项,字典类型
# 内部值为 Key = "Value" 的格式
# 默认值为 null
# 用于支持不同类型存储方案的预备,目前没有任何作用
[Common.PersistStores.Meta]
#SomeKey = "SomeValue"
#
# [Common.MongoKVStore] 已废弃
Common.MongoKVStore
用于配置 damocles-manager
是否启用 Mongo 作为 sealing 过程中使用的 KV 数据库。
# 基础配置范例
[Common.MongoKVStore]
# 启用 Mongo 的开关,选填项,布尔类型
# 默认值为 false
Enable = true
# 使用的 Mongo 的 dsn,在 Enable 为 true 的时候为必填项,字符串类型
DSN = "mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000"
# 使用的 Mongo 的数据库名,在 Enable 为 true 的时候为必填项,字符串类型
DatabaseName = "test"
# [Common.Proving]
用于配置证明任务的并发以及超时时间
配置范例:
# 检查扇区时的最大并行数量,可选项,数字类型
# 默认值为 128。设置为 0 表示不限制并行数量
# 注意:将此值设置得太高可能会使节点因堆栈不足而崩溃
# 注意:将此值设置得太低可能会使扇区 challenge 读取速度变慢,导致 PoSt 失败
#ParallelCheckLimit = 128
# 单个扇区的验证预检查所需的最长时间 可选项,时间类型
# 默认值为 10m0s
# 如果检查超时,将跳过扇区。
#SingleCheckTimeout = "10m0s"
# 整个分区的验证预检查所需的最长时间,可选项,时间类型
# 如果检查超时,分区中未按时检查的扇区将被跳过
#PartitionCheckTimeout = "20m0s"
# [Common.Proving.WorkerProver]
用于配置 worker prover 模块
配置范例:
# WindowPoSt 任务的最大尝试次数,可选项,数字类型
# 默认值为 2
# 尝试次数超过 JobMaxTry 的 WindowPoSt 任务只能通过手动 reset 的方式被重新执行
JobMaxTry = 2
# WindowPoSt 任务的心跳超时时间,可选项,时间字符串类型
# 默认值为 15s
# 超过此时间没有发送心跳的任务将会被设置为失败并重试
HeartbeatTimeout = "15s"
# WindowPoSt 任务的心跳超时时间,可选项,时间字符串类型
# 默认值为 25h
# 创建时间超过此时间的 WindowPoSt 任务将会被删除
JobLifetime = "25h0m0s"
# [Common.DB]
Common.DB
用于配置 sealing 过程中使用的 KV 数据库。目前支持 badger
本地数据库和 mongo
数据库。
# 基础配置范例:
[Common.DB]
# 指定数据库,可选项,字符串类型
# 默认值为 badger
# 可选填 badger | mongo | plugin
Driver = "badger"
[Common.DB.Badger]
# Badger 数据库文件所在目录,可选项,字符串类型
# 默认为空字符串
# BaseDir 为空字符串时 damocles-manager 会使用 home dir(默认为 ~/.damocles-manager) 存放 Badger 数据库文件
#BaseDir = ""
[Common.DB.Mongo]
# 使用的 Mongo 的 dsn,在 Enable 为 true 的时候为必填项,字符串类型
DSN = "mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000"
# 使用的 Mongo 的数据库名,在 Enable 为 true 的时候为必填项,字符串类型
DatabaseName = "test"
# kvstore 插件配置
[Common.DB.Plugin]
# 插件名称,选填项,字符串类型
# 默认为 null
PluginName = "redis"
# 元信息,选填项,字典类型
# 内部值为 Key = "Value" 的格式
# 默认值为 null
# Meta 数据会传入插件的构造函数中
[Common.DB.Plugin.Meta]
#SomeKey = "SomeValue"
#
# [[Miners]]
Miners
是较为重要的一个配置项,用于针对某一个 SP
定义其行为和策略。
damocles
被设计为同一套组件可以支持多个 SP
,在 damocles-manager
中的具体表现就是可以根据需要设置多个 Miners
配置块。
# 主配置项
[[Miners]]
# `SP` actor id,必填项,数字类型
Actor = 10086
除主配置向外, Miners
同样包含多个不同的子配置块,下面我们一一分析
# [Miners.Sector]
用于控制扇区分配的策略。
[Miners.Sector]
# 扇区起始编号,选填项,数字类型
# 默认值为 0
# 已废弃
InitNumber = 0
# 扇区最小编号,选填项,数字类型
# 默认值为 null
# 与 InitNumber 相比,当设置此项时,
# 1. 任何时刻,分配器都不会给出小于等于此值的扇区编号。
# 2. 此项的值可以在集群运行过程中调整。
# 提高配置值,分配结果将始终遵循 1) 的描述。
# 降低配置值通常不会产生效果。
#
# 未设置此项时,如果 InitNumber 为非 0 值,则等效于此项。
#MinNumber = 10
# 扇区编号上限,选填项,数字类型
# 默认值为 null,表示无上限限制
#MaxNumber = 1000000
# 是否允许分配扇区,选填项,布尔类型
# 默认值为 true,即开启分配
# false, 不再进行封装任务
#Enabled = true
# 是否允许分配订单,选填项,布尔类型
# 默认值为 false
#EnableDeals = false
# CC 扇区的生命周期,单位为 天,选填项,数字类型
# 默认值为 540
#LifetimeDays = 540
# Sector 相关模块的日志详尽程度,选填项,布尔类型
# 默认值为 false,即精简日志输出
#Verbose = false
# [Miners.SnapUp]
用于控制 SnapDeal
的生产策略
[Miners.SnapUp]
# 是否启用,选填项,布尔类型
# 默认值为 false
#Enabled = false
# 发送地址,在启用的情况下为必填项,地址类型
#Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
# 提交上链消息时是否从 Sender 发送必要的资金,选填项,布尔类型
# 默认值为 true
# false 时,资金从 miner 出
#SendFund = true
# 单条提交消息的 Gas 估算倍数,选填项,浮点数类型
# 默认值为 1.2
#GasOverEstimation = 1.2
# 单条提交消息的 GasFeeCap 限制,选填项,FIL 值类型
# 默认值为 5 nanoFIL
#GasFeeCap = "5 nanoFIL"
# 已废弃
#MaxFeeCap = ""
# 单条提交消息的 GasPremium 估算倍数,选填项,浮点数类型
# 默认值为 0.0
#GasOverPremium = "0.0"
# snapdeal 消息上链后是否删除原 cc 扇区数据
# 默认值为 true
#CleanupCCData = true
# 消息上链的确信高度,选填项,数字类型
# 默认值为 15
#MessageConfidence = 15
# 释放旧数据存储空间的确信高度,选填项,数字类型
# 默认值为 30
#ReleaseConfidence = 30
# SnapUp 提交重试策略
[Miners.SnapUp.Retry]
# 最大重试次数,选填项,数字类型
# 默认为 NULL,表示不做限制
#MaxAttempts = 10
# 轮询状态的间隔,选填项,时间类型
# 默认值为 3min
#PollInterval = "3m0s"
# API 接口异常的重试间隔,选填项,时间类型
# 默认值为 3min
#APIFailureWait = "3m0s"
# 本地异常的重试间隔,如本地数据库异常、本地存储异常等,选填项,时间类型
# 默认值为 3min
#LocalFailureWait = "3m0s"
# [Miners.Commitment]
用于配置封装消息提交策略的通用部分。
[Miners.Commitment]
# 消息的稳定高度,选填项,数字类型
# 默认值为 10
#Confidence = 10
# [Miners.Commitment.Pre]
用于配置 PreCommit
消息提交的策略
[Miners.Commitment.Pre]
# 提交上链消息时是否从 Sender 发送必要的资金,选填项,布尔类型
# 默认值为 true
#SendFund = true
# 发送地址,必填项,地址类型
Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
# 单条提交消息的 Gas 估算倍数,选填项,浮点数类型
# 默认值为 1.2
#GasOverEstimation = 1.2
# 单条提交消息的 GasFeeCap 限制,选填项,FIL 值类型
# 默认值为 5 nanoFIL
#GasFeeCap = "5 nanoFIL"
# 已废弃
#MaxFeeCap = ""
# 单条提交消息的 GasPremium 估算倍数,选填项,浮点数类型
# 默认值为 0.0
#GasOverPremium = "0.0"
# 聚合提交的策略配置块
[Miners.Commitment.Pre.Batch]
# 启用聚合的 basefee 阈值,当 basefee 大于当前阈值时,启用聚合,选填项,字符串类型
# 默认值为 "0",当阈值设置为 0 时,表示不启用聚合
# 示例: "2 nanoFil", "1.5 nanoFil", "1 nFil"
#BatchCommitAboveBaseFee = "0"
# 最小聚合条数,选填项,数字类型
# 默认值为 16,即最小聚合条数为 16 条
#Threshold = 16
# 最大等待时间,选填项,时间类型
# 默认值为 1h,即最大等待 1 小时
#MaxWait = "1h0m0s"
# 检查间隔,选填项,时间类型
# 默认值为 1min,即每隔 1min 检查一次是否满足聚合条件
#CheckInterval = "1m0s"
# 聚合提交消息的 Gas 估算倍数,选填项,浮点数类型
# 默认值为 1.2
#GasOverEstimation = 1.2
# 聚合提交消息的 GasFeeCap 限制,选填项,FIL 值类型
# 默认值为 5 nanoFIL
#GasFeeCap = "5 nanoFIL"
# 已废弃
#MaxFeeCap = ""
# 聚合提交消息的 GasPremium 估算倍数,选填项,浮点数类型
# 默认值为 0.0
#GasOverPremium = "0.0"
# [Miners.Commitment.Prove]
用于配置 ProveCommit
消息提交的策略,其配置项和作用与 Miners.Commitment.Pre
内的完全一致。
# [Miners.Commitment.Terminate]
用于配置 TerminateSectors
消息提交的策略,其配置项和作用与 Miners.Commitment.Pre
内的基本一致。实际场景中发送此类消息不会很频繁,建议配置单条提交模式,使用聚合提交模式时,Threshold
建议配置较小的值,保证消息及时上链。
# [Miners.PoSt]
用于配置 WindowPoSt
的相关策略。
[Miners.PoSt]
# 发送地址,必填项,地址类型
Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
# 是否启用,选填项,布尔类型
# 默认值为 true
#Enabled = true
# 是否对扇区文件进行强校验,选填项,布尔类型
# 默认值为 true
# 开启时,除了对文件存在性进行判断外,还会尝试读取部分信息,如元数据等
#StrictCheck = true
# 是否启用并行证明,选填项,布尔类型
# 默认值为 false
# 开启时,同一个 deadline 内的多个 partition 将会并行展开证明
# 注意:当设置了外部证明器 (ext-prover),且有多个外部证明器可用时,设置此项才有正面影响
#Parallel = false
# WindowPoSt 消息的 Gas 估算倍数,选填项,浮点数类型
# 默认值为 1.2
#GasOverEstimation = 1.2
# WindowPoSt 消息的 GasFeeCap 限制,选填项,FIL 值类型
# 默认值为 5 nanoFIL
#GasFeeCap = "5 nanoFIL"
# 已废弃
#MaxFeeCap = ""
# WindowPoSt 消息的 GasPremium 估算倍数,选填项,浮点数类型
# 默认值为 0.0
#GasOverPremium = "0.0"
# 消息的稳定高度,选填项,数字类型
# 默认值为 10
#Confidence = 10
# 提交 WindowPoSt 证明结果的稳定高度,选填项,数字类型
# 这个值决定了需要等待多少个高度才认定链进入稳定状态,可以提交 WindowPoSt 证明结果
# 提交高度为 deadline.Open + SubmitConfidence
# 此值设定越小,会越早启动,但同时也越容易受到分叉影响
# 当设置为 0 时,会使用默认值 4
#SubmitConfidence = 0
# 启动 WindowPoSt 的稳定高度,选填项,数字类型
# 这个值决定了需要等待多少个高度才认定链进入稳定状态,可以启动 WindowPoSt 任务
# 启动高度为 deadline.Challenge + ChallengeConfidence
# 此值设定越小,会越早启动,但同时也越容易受到分叉影响
# 当设置为 0 时,会使用默认值 10
#ChallengeConfidence = 0
# 单次 Recover 允许包含的扇区数量上限,选填项,数字类型
# 默认值为 0
# 设置为 0 时,不会进行限制
#MaxRecoverSectorLimit = 0
# 单条 PoSt 消息中允许的最大 Partition 数量,选填项,数字类型
# 默认值为 0
# 设置为 0 时,会使用默认最大值
#MaxPartitionsPerPoStMessage = 0
# 单条 Recover 消息中允许的最大 Partition 数量,选填项,数字类型
# 默认值为 0
# 设置为 0 时,不限制
#MaxPartitionsPerRecoveryMessage = 0
# [Miners.Proof]
用于配置 WinningPoSt Proof 相关的策略
[Miners.Proof]
# 是否启用,选填项,布尔类型
# 默认值为 false
#Enabled = false
# [Miners.Sealing]
用于配置 sealing 过程中相关的策略
[Miners.Sealing]
# sealing 过程需要持续的高度,在筛选订单的时候会将订单的开始限定为当前高度 + 该值,选填项,整数类型
# 默认为 0,表示没配置
#SealingEpochDuration = 0
#
# 是否启用 SyntheticPoRep , 选填项,布尔类型
# 默认值为 false
#UseSyntheticPoRep = false
# [Miners.Deal] 已废弃
用于配置订单相关的策略。
[Miners.Deal]
# 是否启用,选填项,布尔类型
# 默认值为 false
#Enabled = false
# 一份最简可工作的配置文件范例
我们以启动支持一个 SP
运作的 damocles-manager
为例,
[Common]
[Common.API]
Gateway = ["/ip4/{api_host}/tcp/{api_port}"]
Token = "{some token}"
Chain = "/ip4/{api_host}/tcp/{api_port}"
Messager = "/ip4/{api_host}/tcp/{api_port}"
Market = "/ip4/{api_host}/tcp/{api_port}"
[[Common.PieceStores]]
Path = "{store_path}"
[[Common.PersistStores]]
Name = "{store_name1}"
Path = "{store_path1}"
[[Common.PersistStores]]
Name = "{store_name2}"
Path = "{store_path2}"
[[Common.PersistStores]]
Name = "{store_name3}"
Path = "{store_path3}"
[[Common.PersistStores]]
Name = "{store_name4}"
Path = "{store_path4}"
[[Miners]]
Actor = 10086
[Miners.Sector]
InitNumber = 1000
Enabled = true
EnableDeals = true
[Miners.Commitment]
[Miners.Commitment.Pre]
Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
[Miners.Commitment.Pre.Batch]
[Miners.Commitment.Prove]
Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
[Miners.Commitment.Prove.Batch]
[Miners.PoSt]
Sender = "t1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za"
Enabled = true
[Miners.Proof]
Enabled = true
这样就激活了一个:
- 拥有 1 个本地 PieceStore
- 拥有 4 个本地 持久化 Store
- 启用扇区分配,其初始编号为 1000
- 不启用聚合 PreCommit
- 启用聚合 ProveCommit
- 启用 WinningPoSt 模块
- 启用订单
的 damocles-manager
实例。