# 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
Copied!
我们将逐一分析其中的可配置项。
# [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"
Copied!
# [Common.Plugins]
Common.Plugins
配置 damocles-manager 的插件存放路径
[Common.Plugins] # 插件存放路径,选填项,字符串类型 # 默认为空字符串,表示不加载任何插件 # 建议使用绝对路径 Dir = ""
Copied!
# [[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" #
Copied!
# [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" #
Copied!
- storage.json
{ "StoragePaths": [ { "Name": "persist", "Path": "/root/persist" } ] }
Copied!
其中 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" #
Copied!
# [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"
Copied!
# [Common.Proving]
用于配置证明任务的并发以及超时时间
配置范例:
# 检查扇区时的最大并行数量,可选项,数字类型 # 默认值为 128。设置为 0 表示不限制并行数量 # 注意:将此值设置得太高可能会使节点因堆栈不足而崩溃 # 注意:将此值设置得太低可能会使扇区 challenge 读取速度变慢,导致 PoSt 失败 #ParallelCheckLimit = 128 # 单个扇区的验证预检查所需的最长时间 可选项,时间类型 # 默认值为 10m0s # 如果检查超时,将跳过扇区。 #SingleCheckTimeout = "10m0s" # 整个分区的验证预检查所需的最长时间,可选项,时间类型 # 如果检查超时,分区中未按时检查的扇区将被跳过 #PartitionCheckTimeout = "20m0s"
Copied!
# [Common.Proving.WorkerProver]
用于配置 worker prover 模块
配置范例:
# WindowPoSt 任务的最大尝试次数,可选项,数字类型 # 默认值为 2 # 尝试次数超过 JobMaxTry 的 WindowPoSt 任务只能通过手动 reset 的方式被重新执行 JobMaxTry = 2 # WindowPoSt 任务的心跳超时时间,可选项,时间字符串类型 # 默认值为 15s # 超过此时间没有发送心跳的任务将会被设置为失败并重试 HeartbeatTimeout = "15s" # WindowPoSt 任务的心跳超时时间,可选项,时间字符串类型 # 默认值为 25h # 创建时间超过此时间的 WindowPoSt 任务将会被删除 JobLifetime = "25h0m0s"
Copied!
# [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" #
Copied!
# [[Miners]]
Miners
是较为重要的一个配置项,用于针对某一个 SP
定义其行为和策略。
damocles
被设计为同一套组件可以支持多个 SP
,在 damocles-manager
中的具体表现就是可以根据需要设置多个 Miners
配置块。
# 主配置项
[[Miners]] # `SP` actor id,必填项,数字类型 Actor = 10086
Copied!
除主配置向外, 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
Copied!
# [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"
Copied!
# [Miners.Commitment]
用于配置封装消息提交策略的通用部分。
[Miners.Commitment] # 消息的稳定高度,选填项,数字类型 # 默认值为 10 #Confidence = 10
Copied!
# [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"
Copied!
# [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
Copied!
# [Miners.Proof]
用于配置 WinningPoSt Proof 相关的策略
[Miners.Proof] # 是否启用,选填项,布尔类型 # 默认值为 false #Enabled = false
Copied!
# [Miners.Sealing]
用于配置 sealing 过程中相关的策略
[Miners.Sealing] # sealing 过程需要持续的高度,在筛选订单的时候会将订单的开始限定为当前高度 + 该值,选填项,整数类型 # 默认为 0,表示没配置 #SealingEpochDuration = 0 # # 是否启用 SyntheticPoRep , 选填项,布尔类型 # 默认值为 false #UseSyntheticPoRep = false
Copied!
# [Miners.Deal] 已废弃
用于配置订单相关的策略。
[Miners.Deal] # 是否启用,选填项,布尔类型 # 默认值为 false #Enabled = false
Copied!
# 一份最简可工作的配置文件范例
我们以启动支持一个 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
Copied!
这样就激活了一个:
- 拥有 1 个本地 PieceStore
- 拥有 4 个本地 持久化 Store
- 启用扇区分配,其初始编号为 1000
- 不启用聚合 PreCommit
- 启用聚合 ProveCommit
- 启用 WinningPoSt 模块
- 启用订单
的 damocles-manager
实例。