config: doc struct codegen
This commit is contained in:
parent
cf65804883
commit
97f5bb66c7
5
Makefile
5
Makefile
@ -336,6 +336,9 @@ api-gen:
|
||||
goimports -w api
|
||||
.PHONY: api-gen
|
||||
|
||||
cfgdoc-gen:
|
||||
go run ./node/config/cfgdocgen > ./node/config/doc_gen.go
|
||||
|
||||
appimage: lotus
|
||||
rm -rf appimage-builder-cache || true
|
||||
rm AppDir/io.filecoin.lotus.desktop || true
|
||||
@ -373,7 +376,7 @@ docsgen-openrpc-worker: docsgen-openrpc-bin
|
||||
|
||||
.PHONY: docsgen docsgen-md-bin docsgen-openrpc-bin
|
||||
|
||||
gen: actors-gen type-gen method-gen docsgen api-gen circleci
|
||||
gen: actors-gen type-gen method-gen cfgdoc-gen docsgen api-gen circleci
|
||||
@echo ">>> IF YOU'VE MODIFIED THE CLI, REMEMBER TO ALSO MAKE docsgen-cli"
|
||||
.PHONY: gen
|
||||
|
||||
|
@ -28,7 +28,7 @@ var configDefaultCmd = &cli.Command{
|
||||
Usage: "Print default node config",
|
||||
Flags: []cli.Flag{
|
||||
&cli.BoolFlag{
|
||||
Name: "no-comment",
|
||||
Name: "no-comment",
|
||||
Usage: "don't comment default values",
|
||||
},
|
||||
},
|
||||
@ -63,7 +63,7 @@ var configUpdateCmd = &cli.Command{
|
||||
Usage: "Print updated node config",
|
||||
Flags: []cli.Flag{
|
||||
&cli.BoolFlag{
|
||||
Name: "no-comment",
|
||||
Name: "no-comment",
|
||||
Usage: "don't comment default values",
|
||||
},
|
||||
},
|
||||
|
@ -12,6 +12,7 @@ VERSION:
|
||||
COMMANDS:
|
||||
daemon Start a lotus daemon process
|
||||
backup Create node metadata backup
|
||||
config Manage node config
|
||||
version Print version
|
||||
help, h Shows a list of commands or help for one command
|
||||
BASIC:
|
||||
@ -108,6 +109,53 @@ OPTIONS:
|
||||
|
||||
```
|
||||
|
||||
## lotus config
|
||||
```
|
||||
NAME:
|
||||
lotus config - Manage node config
|
||||
|
||||
USAGE:
|
||||
lotus config command [command options] [arguments...]
|
||||
|
||||
COMMANDS:
|
||||
default Print default node config
|
||||
updated Print updated node config
|
||||
help, h Shows a list of commands or help for one command
|
||||
|
||||
OPTIONS:
|
||||
--help, -h show help (default: false)
|
||||
--version, -v print the version (default: false)
|
||||
|
||||
```
|
||||
|
||||
### lotus config default
|
||||
```
|
||||
NAME:
|
||||
lotus config default - Print default node config
|
||||
|
||||
USAGE:
|
||||
lotus config default [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--no-comment don't comment default values (default: false)
|
||||
--help, -h show help (default: false)
|
||||
|
||||
```
|
||||
|
||||
### lotus config updated
|
||||
```
|
||||
NAME:
|
||||
lotus config updated - Print updated node config
|
||||
|
||||
USAGE:
|
||||
lotus config updated [command options] [arguments...]
|
||||
|
||||
OPTIONS:
|
||||
--no-comment don't comment default values (default: false)
|
||||
--help, -h show help (default: false)
|
||||
|
||||
```
|
||||
|
||||
## lotus version
|
||||
```
|
||||
NAME:
|
||||
|
131
node/config/cfgdocgen/gen.go
Normal file
131
node/config/cfgdocgen/gen.go
Normal file
@ -0,0 +1,131 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func run() error {
|
||||
tfb, err := ioutil.ReadFile("./node/config/types.go")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// could use the ast lib, but this is simpler
|
||||
|
||||
type st int
|
||||
const (
|
||||
stGlobal st = iota // looking for typedef
|
||||
stType st = iota // in typedef
|
||||
)
|
||||
|
||||
lines := strings.Split(string(tfb), "\n")
|
||||
state := stGlobal
|
||||
|
||||
type field struct {
|
||||
Name string
|
||||
Type string
|
||||
Comment string
|
||||
}
|
||||
|
||||
var currentType string
|
||||
var currentComment []string
|
||||
|
||||
out := map[string][]field{}
|
||||
|
||||
for l := range lines {
|
||||
line := strings.TrimSpace(lines[l])
|
||||
|
||||
switch state {
|
||||
case stGlobal:
|
||||
if strings.HasPrefix(line, "type ") {
|
||||
currentType = line
|
||||
currentType = strings.TrimPrefix(currentType, "type")
|
||||
currentType = strings.TrimSuffix(currentType, "{")
|
||||
currentType = strings.TrimSpace(currentType)
|
||||
currentType = strings.TrimSuffix(currentType, "struct")
|
||||
currentType = strings.TrimSpace(currentType)
|
||||
currentComment = nil
|
||||
state = stType
|
||||
continue
|
||||
}
|
||||
case stType:
|
||||
if strings.HasPrefix(line, "// ") {
|
||||
cline := strings.TrimSpace(strings.TrimPrefix(line, "//"))
|
||||
currentComment = append(currentComment, cline)
|
||||
continue
|
||||
}
|
||||
|
||||
comment := currentComment
|
||||
currentComment = nil
|
||||
|
||||
if strings.HasPrefix(line, "}") {
|
||||
state = stGlobal
|
||||
continue
|
||||
}
|
||||
|
||||
f := strings.Fields(line)
|
||||
if len(f) < 2 { // empty or embedded struct
|
||||
continue
|
||||
}
|
||||
|
||||
name := f[0]
|
||||
typ := f[1]
|
||||
|
||||
out[currentType] = append(out[currentType], field{
|
||||
Name: name,
|
||||
Type: typ,
|
||||
Comment: strings.Join(comment, "\n"),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
var outt []string
|
||||
for t := range out {
|
||||
outt = append(outt, t)
|
||||
}
|
||||
sort.Strings(outt)
|
||||
|
||||
fmt.Print(`// Code generated by github.com/filecoin-project/lotus/node/config/cfgdocgen. DO NOT EDIT.
|
||||
|
||||
package config
|
||||
|
||||
type DocField struct {
|
||||
Name string
|
||||
Type string
|
||||
Comment string
|
||||
}
|
||||
|
||||
var Doc = map[string][]DocField{
|
||||
`)
|
||||
|
||||
for _, typeName := range outt {
|
||||
typ := out[typeName]
|
||||
|
||||
fmt.Printf("\t\"%s\": []DocField{\n", typeName)
|
||||
|
||||
for _, f := range typ {
|
||||
fmt.Println("\t\t{")
|
||||
fmt.Printf("\t\t\tName: \"%s\",\n", f.Name)
|
||||
fmt.Printf("\t\t\tType: \"%s\",\n", f.Type)
|
||||
fmt.Printf("\t\t\tComment: `%s`,\n", f.Comment)
|
||||
fmt.Println("\t\t},")
|
||||
}
|
||||
|
||||
fmt.Printf("\t},\n")
|
||||
}
|
||||
|
||||
fmt.Println(`}`)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
if err := run(); err != nil {
|
||||
fmt.Printf(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
@ -22,264 +22,10 @@ const (
|
||||
RetrievalPricingExternalMode = "external"
|
||||
)
|
||||
|
||||
// Common is common config between full node and miner
|
||||
type Common struct {
|
||||
API API
|
||||
Backup Backup
|
||||
Libp2p Libp2p
|
||||
Pubsub Pubsub
|
||||
}
|
||||
|
||||
// FullNode is a full node config
|
||||
type FullNode struct {
|
||||
Common
|
||||
Client Client
|
||||
Metrics Metrics
|
||||
Wallet Wallet
|
||||
Fees FeeConfig
|
||||
Chainstore Chainstore
|
||||
}
|
||||
|
||||
// // Common
|
||||
|
||||
type Backup struct {
|
||||
DisableMetadataLog bool
|
||||
}
|
||||
|
||||
// StorageMiner is a miner config
|
||||
type StorageMiner struct {
|
||||
Common
|
||||
|
||||
Subsystems MinerSubsystemConfig
|
||||
Dealmaking DealmakingConfig
|
||||
Sealing SealingConfig
|
||||
Storage sectorstorage.SealerConfig
|
||||
Fees MinerFeeConfig
|
||||
Addresses MinerAddressConfig
|
||||
}
|
||||
|
||||
type MinerSubsystemConfig struct {
|
||||
EnableMining bool
|
||||
EnableSealing bool
|
||||
EnableSectorStorage bool
|
||||
EnableMarkets bool
|
||||
|
||||
SealerApiInfo string // if EnableSealing == false
|
||||
SectorIndexApiInfo string // if EnableSectorStorage == false
|
||||
}
|
||||
|
||||
type DealmakingConfig struct {
|
||||
ConsiderOnlineStorageDeals bool
|
||||
ConsiderOfflineStorageDeals bool
|
||||
ConsiderOnlineRetrievalDeals bool
|
||||
ConsiderOfflineRetrievalDeals bool
|
||||
ConsiderVerifiedStorageDeals bool
|
||||
ConsiderUnverifiedStorageDeals bool
|
||||
PieceCidBlocklist []cid.Cid
|
||||
ExpectedSealDuration Duration
|
||||
// Maximum amount of time proposed deal StartEpoch can be in future
|
||||
MaxDealStartDelay Duration
|
||||
// The amount of time to wait for more deals to arrive before
|
||||
// publishing
|
||||
PublishMsgPeriod Duration
|
||||
// The maximum number of deals to include in a single PublishStorageDeals
|
||||
// message
|
||||
MaxDealsPerPublishMsg uint64
|
||||
// The maximum collateral that the provider will put up against a deal,
|
||||
// as a multiplier of the minimum collateral bound
|
||||
MaxProviderCollateralMultiplier uint64
|
||||
|
||||
// The maximum number of parallel online data transfers (storage+retrieval)
|
||||
SimultaneousTransfers uint64
|
||||
|
||||
Filter string
|
||||
RetrievalFilter string
|
||||
|
||||
RetrievalPricing *RetrievalPricing
|
||||
}
|
||||
|
||||
type RetrievalPricing struct {
|
||||
Strategy string // possible values: "default", "external"
|
||||
|
||||
Default *RetrievalPricingDefault
|
||||
External *RetrievalPricingExternal
|
||||
}
|
||||
|
||||
type RetrievalPricingExternal struct {
|
||||
// Path of the external script that will be run to price a retrieval deal.
|
||||
// This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "external".
|
||||
Path string
|
||||
}
|
||||
|
||||
type RetrievalPricingDefault struct {
|
||||
// VerifiedDealsFreeTransfer configures zero fees for data transfer for a retrieval deal
|
||||
// of a payloadCid that belongs to a verified storage deal.
|
||||
// This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "default".
|
||||
// default value is true
|
||||
VerifiedDealsFreeTransfer bool
|
||||
}
|
||||
|
||||
type SealingConfig struct {
|
||||
// 0 = no limit
|
||||
MaxWaitDealsSectors uint64
|
||||
|
||||
// includes failed, 0 = no limit
|
||||
MaxSealingSectors uint64
|
||||
|
||||
// includes failed, 0 = no limit
|
||||
MaxSealingSectorsForDeals uint64
|
||||
|
||||
WaitDealsDelay Duration
|
||||
|
||||
AlwaysKeepUnsealedCopy bool
|
||||
|
||||
// Run sector finalization before submitting sector proof to the chain
|
||||
FinalizeEarly bool
|
||||
|
||||
// Whether to use available miner balance for sector collateral instead of sending it with each message
|
||||
CollateralFromMinerBalance bool
|
||||
// Minimum available balance to keep in the miner actor before sending it with messages
|
||||
AvailableBalanceBuffer types.FIL
|
||||
// Don't send collateral with messages even if there is no available balance in the miner actor
|
||||
DisableCollateralFallback bool
|
||||
|
||||
// enable / disable precommit batching (takes effect after nv13)
|
||||
BatchPreCommits bool
|
||||
// maximum precommit batch size - batches will be sent immediately above this size
|
||||
MaxPreCommitBatch int
|
||||
// how long to wait before submitting a batch after crossing the minimum batch size
|
||||
PreCommitBatchWait Duration
|
||||
// time buffer for forceful batch submission before sectors/deal in batch would start expiring
|
||||
PreCommitBatchSlack Duration
|
||||
|
||||
// enable / disable commit aggregation (takes effect after nv13)
|
||||
AggregateCommits bool
|
||||
// maximum batched commit size - batches will be sent immediately above this size
|
||||
MinCommitBatch int
|
||||
MaxCommitBatch int
|
||||
// how long to wait before submitting a batch after crossing the minimum batch size
|
||||
CommitBatchWait Duration
|
||||
// time buffer for forceful batch submission before sectors/deals in batch would start expiring
|
||||
CommitBatchSlack Duration
|
||||
|
||||
// network BaseFee below which to stop doing commit aggregation, instead
|
||||
// submitting proofs to the chain individually
|
||||
AggregateAboveBaseFee types.FIL
|
||||
|
||||
TerminateBatchMax uint64
|
||||
TerminateBatchMin uint64
|
||||
TerminateBatchWait Duration
|
||||
|
||||
// Keep this many sectors in sealing pipeline, start CC if needed
|
||||
// todo TargetSealingSectors uint64
|
||||
|
||||
// todo TargetSectors - stop auto-pleding new sectors after this many sectors are sealed, default CC upgrade for deals sectors if above
|
||||
}
|
||||
|
||||
type BatchFeeConfig struct {
|
||||
Base types.FIL
|
||||
PerSector types.FIL
|
||||
}
|
||||
|
||||
func (b *BatchFeeConfig) FeeForSectors(nSectors int) abi.TokenAmount {
|
||||
return big.Add(big.Int(b.Base), big.Mul(big.NewInt(int64(nSectors)), big.Int(b.PerSector)))
|
||||
}
|
||||
|
||||
type MinerFeeConfig struct {
|
||||
MaxPreCommitGasFee types.FIL
|
||||
MaxCommitGasFee types.FIL
|
||||
|
||||
// maxBatchFee = maxBase + maxPerSector * nSectors
|
||||
MaxPreCommitBatchGasFee BatchFeeConfig
|
||||
MaxCommitBatchGasFee BatchFeeConfig
|
||||
|
||||
MaxTerminateGasFee types.FIL
|
||||
MaxWindowPoStGasFee types.FIL
|
||||
MaxPublishDealsFee types.FIL
|
||||
MaxMarketBalanceAddFee types.FIL
|
||||
}
|
||||
|
||||
type MinerAddressConfig struct {
|
||||
PreCommitControl []string
|
||||
CommitControl []string
|
||||
TerminateControl []string
|
||||
DealPublishControl []string
|
||||
|
||||
// DisableOwnerFallback disables usage of the owner address for messages
|
||||
// sent automatically
|
||||
DisableOwnerFallback bool
|
||||
// DisableWorkerFallback disables usage of the worker address for messages
|
||||
// sent automatically, if control addresses are configured.
|
||||
// A control address that doesn't have enough funds will still be chosen
|
||||
// over the worker address if this flag is set.
|
||||
DisableWorkerFallback bool
|
||||
}
|
||||
|
||||
// API contains configs for API endpoint
|
||||
type API struct {
|
||||
ListenAddress string
|
||||
RemoteListenAddress string
|
||||
Timeout Duration
|
||||
}
|
||||
|
||||
// Libp2p contains configs for libp2p
|
||||
type Libp2p struct {
|
||||
ListenAddresses []string
|
||||
AnnounceAddresses []string
|
||||
NoAnnounceAddresses []string
|
||||
BootstrapPeers []string
|
||||
ProtectedPeers []string
|
||||
|
||||
ConnMgrLow uint
|
||||
ConnMgrHigh uint
|
||||
ConnMgrGrace Duration
|
||||
}
|
||||
|
||||
type Pubsub struct {
|
||||
Bootstrapper bool
|
||||
DirectPeers []string
|
||||
IPColocationWhitelist []string
|
||||
RemoteTracer string
|
||||
}
|
||||
|
||||
type Chainstore struct {
|
||||
EnableSplitstore bool
|
||||
Splitstore Splitstore
|
||||
}
|
||||
|
||||
type Splitstore struct {
|
||||
ColdStoreType string
|
||||
HotStoreType string
|
||||
MarkSetType string
|
||||
|
||||
HotStoreMessageRetention uint64
|
||||
}
|
||||
|
||||
// // Full Node
|
||||
|
||||
type Metrics struct {
|
||||
Nickname string
|
||||
HeadNotifs bool
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
UseIpfs bool
|
||||
IpfsOnlineMode bool
|
||||
IpfsMAddr string
|
||||
IpfsUseForRetrieval bool
|
||||
SimultaneousTransfers uint64
|
||||
}
|
||||
|
||||
type Wallet struct {
|
||||
RemoteBackend string
|
||||
EnableLedger bool
|
||||
DisableLocal bool
|
||||
}
|
||||
|
||||
type FeeConfig struct {
|
||||
DefaultMaxFee types.FIL
|
||||
}
|
||||
|
||||
func defCommon() Common {
|
||||
return Common{
|
||||
API: API{
|
||||
|
633
node/config/doc_gen.go
Normal file
633
node/config/doc_gen.go
Normal file
@ -0,0 +1,633 @@
|
||||
// Code generated by github.com/filecoin-project/lotus/node/config/cfgdocgen. DO NOT EDIT.
|
||||
|
||||
package config
|
||||
|
||||
type DocField struct {
|
||||
Name string
|
||||
Type string
|
||||
Comment string
|
||||
}
|
||||
|
||||
var Doc = map[string][]DocField{
|
||||
"API": []DocField{
|
||||
{
|
||||
Name: "ListenAddress",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "RemoteListenAddress",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Timeout",
|
||||
Type: "Duration",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Backup": []DocField{
|
||||
{
|
||||
Name: "DisableMetadataLog",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"BatchFeeConfig": []DocField{
|
||||
{
|
||||
Name: "Base",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "PerSector",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Chainstore": []DocField{
|
||||
{
|
||||
Name: "EnableSplitstore",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Splitstore",
|
||||
Type: "Splitstore",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Client": []DocField{
|
||||
{
|
||||
Name: "UseIpfs",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "IpfsOnlineMode",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "IpfsMAddr",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "IpfsUseForRetrieval",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "SimultaneousTransfers",
|
||||
Type: "uint64",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Common": []DocField{
|
||||
{
|
||||
Name: "API",
|
||||
Type: "API",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Backup",
|
||||
Type: "Backup",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Libp2p",
|
||||
Type: "Libp2p",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Pubsub",
|
||||
Type: "Pubsub",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"DealmakingConfig": []DocField{
|
||||
{
|
||||
Name: "ConsiderOnlineStorageDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConsiderOfflineStorageDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConsiderOnlineRetrievalDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConsiderOfflineRetrievalDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConsiderVerifiedStorageDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConsiderUnverifiedStorageDeals",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "PieceCidBlocklist",
|
||||
Type: "[]cid.Cid",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ExpectedSealDuration",
|
||||
Type: "Duration",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxDealStartDelay",
|
||||
Type: "Duration",
|
||||
Comment: `Maximum amount of time proposed deal StartEpoch can be in future`,
|
||||
},
|
||||
{
|
||||
Name: "PublishMsgPeriod",
|
||||
Type: "Duration",
|
||||
Comment: `The amount of time to wait for more deals to arrive before
|
||||
publishing`,
|
||||
},
|
||||
{
|
||||
Name: "MaxDealsPerPublishMsg",
|
||||
Type: "uint64",
|
||||
Comment: `The maximum number of deals to include in a single PublishStorageDeals
|
||||
message`,
|
||||
},
|
||||
{
|
||||
Name: "MaxProviderCollateralMultiplier",
|
||||
Type: "uint64",
|
||||
Comment: `The maximum collateral that the provider will put up against a deal,
|
||||
as a multiplier of the minimum collateral bound`,
|
||||
},
|
||||
{
|
||||
Name: "SimultaneousTransfers",
|
||||
Type: "uint64",
|
||||
Comment: `The maximum number of parallel online data transfers (storage+retrieval)`,
|
||||
},
|
||||
{
|
||||
Name: "Filter",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "RetrievalFilter",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "RetrievalPricing",
|
||||
Type: "*RetrievalPricing",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"FeeConfig": []DocField{
|
||||
{
|
||||
Name: "DefaultMaxFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"FullNode": []DocField{
|
||||
{
|
||||
Name: "Client",
|
||||
Type: "Client",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Metrics",
|
||||
Type: "Metrics",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Wallet",
|
||||
Type: "Wallet",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Fees",
|
||||
Type: "FeeConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Chainstore",
|
||||
Type: "Chainstore",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Libp2p": []DocField{
|
||||
{
|
||||
Name: "ListenAddresses",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "AnnounceAddresses",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "NoAnnounceAddresses",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "BootstrapPeers",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ProtectedPeers",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConnMgrLow",
|
||||
Type: "uint",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConnMgrHigh",
|
||||
Type: "uint",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "ConnMgrGrace",
|
||||
Type: "Duration",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Metrics": []DocField{
|
||||
{
|
||||
Name: "Nickname",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "HeadNotifs",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"MinerAddressConfig": []DocField{
|
||||
{
|
||||
Name: "PreCommitControl",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "CommitControl",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "TerminateControl",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "DealPublishControl",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "DisableOwnerFallback",
|
||||
Type: "bool",
|
||||
Comment: `DisableOwnerFallback disables usage of the owner address for messages
|
||||
sent automatically`,
|
||||
},
|
||||
{
|
||||
Name: "DisableWorkerFallback",
|
||||
Type: "bool",
|
||||
Comment: `DisableWorkerFallback disables usage of the worker address for messages
|
||||
sent automatically, if control addresses are configured.
|
||||
A control address that doesn't have enough funds will still be chosen
|
||||
over the worker address if this flag is set.`,
|
||||
},
|
||||
},
|
||||
"MinerFeeConfig": []DocField{
|
||||
{
|
||||
Name: "MaxPreCommitGasFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxCommitGasFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxPreCommitBatchGasFee",
|
||||
Type: "BatchFeeConfig",
|
||||
Comment: `maxBatchFee = maxBase + maxPerSector * nSectors`,
|
||||
},
|
||||
{
|
||||
Name: "MaxCommitBatchGasFee",
|
||||
Type: "BatchFeeConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxTerminateGasFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxWindowPoStGasFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxPublishDealsFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MaxMarketBalanceAddFee",
|
||||
Type: "types.FIL",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"MinerSubsystemConfig": []DocField{
|
||||
{
|
||||
Name: "EnableMining",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "EnableSealing",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "EnableSectorStorage",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "EnableMarkets",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "SealerApiInfo",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "SectorIndexApiInfo",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Pubsub": []DocField{
|
||||
{
|
||||
Name: "Bootstrapper",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "DirectPeers",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "IPColocationWhitelist",
|
||||
Type: "[]string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "RemoteTracer",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"RetrievalPricing": []DocField{
|
||||
{
|
||||
Name: "Strategy",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Default",
|
||||
Type: "*RetrievalPricingDefault",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "External",
|
||||
Type: "*RetrievalPricingExternal",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"RetrievalPricingDefault": []DocField{
|
||||
{
|
||||
Name: "VerifiedDealsFreeTransfer",
|
||||
Type: "bool",
|
||||
Comment: `VerifiedDealsFreeTransfer configures zero fees for data transfer for a retrieval deal
|
||||
of a payloadCid that belongs to a verified storage deal.
|
||||
This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "default".
|
||||
default value is true`,
|
||||
},
|
||||
},
|
||||
"RetrievalPricingExternal": []DocField{
|
||||
{
|
||||
Name: "Path",
|
||||
Type: "string",
|
||||
Comment: `Path of the external script that will be run to price a retrieval deal.
|
||||
This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "external".`,
|
||||
},
|
||||
},
|
||||
"SealingConfig": []DocField{
|
||||
{
|
||||
Name: "MaxWaitDealsSectors",
|
||||
Type: "uint64",
|
||||
Comment: `0 = no limit`,
|
||||
},
|
||||
{
|
||||
Name: "MaxSealingSectors",
|
||||
Type: "uint64",
|
||||
Comment: `includes failed, 0 = no limit`,
|
||||
},
|
||||
{
|
||||
Name: "MaxSealingSectorsForDeals",
|
||||
Type: "uint64",
|
||||
Comment: `includes failed, 0 = no limit`,
|
||||
},
|
||||
{
|
||||
Name: "WaitDealsDelay",
|
||||
Type: "Duration",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "AlwaysKeepUnsealedCopy",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "FinalizeEarly",
|
||||
Type: "bool",
|
||||
Comment: `Run sector finalization before submitting sector proof to the chain`,
|
||||
},
|
||||
{
|
||||
Name: "CollateralFromMinerBalance",
|
||||
Type: "bool",
|
||||
Comment: `Whether to use available miner balance for sector collateral instead of sending it with each message`,
|
||||
},
|
||||
{
|
||||
Name: "AvailableBalanceBuffer",
|
||||
Type: "types.FIL",
|
||||
Comment: `Minimum available balance to keep in the miner actor before sending it with messages`,
|
||||
},
|
||||
{
|
||||
Name: "DisableCollateralFallback",
|
||||
Type: "bool",
|
||||
Comment: `Don't send collateral with messages even if there is no available balance in the miner actor`,
|
||||
},
|
||||
{
|
||||
Name: "BatchPreCommits",
|
||||
Type: "bool",
|
||||
Comment: `enable / disable precommit batching (takes effect after nv13)`,
|
||||
},
|
||||
{
|
||||
Name: "MaxPreCommitBatch",
|
||||
Type: "int",
|
||||
Comment: `maximum precommit batch size - batches will be sent immediately above this size`,
|
||||
},
|
||||
{
|
||||
Name: "PreCommitBatchWait",
|
||||
Type: "Duration",
|
||||
Comment: `how long to wait before submitting a batch after crossing the minimum batch size`,
|
||||
},
|
||||
{
|
||||
Name: "PreCommitBatchSlack",
|
||||
Type: "Duration",
|
||||
Comment: `time buffer for forceful batch submission before sectors/deal in batch would start expiring`,
|
||||
},
|
||||
{
|
||||
Name: "AggregateCommits",
|
||||
Type: "bool",
|
||||
Comment: `enable / disable commit aggregation (takes effect after nv13)`,
|
||||
},
|
||||
{
|
||||
Name: "MinCommitBatch",
|
||||
Type: "int",
|
||||
Comment: `maximum batched commit size - batches will be sent immediately above this size`,
|
||||
},
|
||||
{
|
||||
Name: "MaxCommitBatch",
|
||||
Type: "int",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "CommitBatchWait",
|
||||
Type: "Duration",
|
||||
Comment: `how long to wait before submitting a batch after crossing the minimum batch size`,
|
||||
},
|
||||
{
|
||||
Name: "CommitBatchSlack",
|
||||
Type: "Duration",
|
||||
Comment: `time buffer for forceful batch submission before sectors/deals in batch would start expiring`,
|
||||
},
|
||||
{
|
||||
Name: "AggregateAboveBaseFee",
|
||||
Type: "types.FIL",
|
||||
Comment: `network BaseFee below which to stop doing commit aggregation, instead
|
||||
submitting proofs to the chain individually`,
|
||||
},
|
||||
{
|
||||
Name: "TerminateBatchMax",
|
||||
Type: "uint64",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "TerminateBatchMin",
|
||||
Type: "uint64",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "TerminateBatchWait",
|
||||
Type: "Duration",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Splitstore": []DocField{
|
||||
{
|
||||
Name: "ColdStoreType",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "HotStoreType",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "MarkSetType",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "HotStoreMessageRetention",
|
||||
Type: "uint64",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"StorageMiner": []DocField{
|
||||
{
|
||||
Name: "Subsystems",
|
||||
Type: "MinerSubsystemConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Dealmaking",
|
||||
Type: "DealmakingConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Sealing",
|
||||
Type: "SealingConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Storage",
|
||||
Type: "sectorstorage.SealerConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Fees",
|
||||
Type: "MinerFeeConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "Addresses",
|
||||
Type: "MinerAddressConfig",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
"Wallet": []DocField{
|
||||
{
|
||||
Name: "RemoteBackend",
|
||||
Type: "string",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "EnableLedger",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
{
|
||||
Name: "DisableLocal",
|
||||
Type: "bool",
|
||||
Comment: ``,
|
||||
},
|
||||
},
|
||||
}
|
264
node/config/types.go
Normal file
264
node/config/types.go
Normal file
@ -0,0 +1,264 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"github.com/ipfs/go-cid"
|
||||
|
||||
"github.com/filecoin-project/lotus/chain/types"
|
||||
sectorstorage "github.com/filecoin-project/lotus/extern/sector-storage"
|
||||
)
|
||||
|
||||
// // NOTE: ONLY PUT STRUCT DEFINITIONS IN THIS FILE
|
||||
|
||||
// Common is common config between full node and miner
|
||||
type Common struct {
|
||||
API API
|
||||
Backup Backup
|
||||
Libp2p Libp2p
|
||||
Pubsub Pubsub
|
||||
}
|
||||
|
||||
// FullNode is a full node config
|
||||
type FullNode struct {
|
||||
Common
|
||||
Client Client
|
||||
Metrics Metrics
|
||||
Wallet Wallet
|
||||
Fees FeeConfig
|
||||
Chainstore Chainstore
|
||||
}
|
||||
|
||||
// // Common
|
||||
|
||||
type Backup struct {
|
||||
DisableMetadataLog bool
|
||||
}
|
||||
|
||||
// StorageMiner is a miner config
|
||||
type StorageMiner struct {
|
||||
Common
|
||||
|
||||
Subsystems MinerSubsystemConfig
|
||||
Dealmaking DealmakingConfig
|
||||
Sealing SealingConfig
|
||||
Storage sectorstorage.SealerConfig
|
||||
Fees MinerFeeConfig
|
||||
Addresses MinerAddressConfig
|
||||
}
|
||||
|
||||
type MinerSubsystemConfig struct {
|
||||
EnableMining bool
|
||||
EnableSealing bool
|
||||
EnableSectorStorage bool
|
||||
EnableMarkets bool
|
||||
|
||||
SealerApiInfo string // if EnableSealing == false
|
||||
SectorIndexApiInfo string // if EnableSectorStorage == false
|
||||
}
|
||||
|
||||
type DealmakingConfig struct {
|
||||
ConsiderOnlineStorageDeals bool
|
||||
ConsiderOfflineStorageDeals bool
|
||||
ConsiderOnlineRetrievalDeals bool
|
||||
ConsiderOfflineRetrievalDeals bool
|
||||
ConsiderVerifiedStorageDeals bool
|
||||
ConsiderUnverifiedStorageDeals bool
|
||||
PieceCidBlocklist []cid.Cid
|
||||
ExpectedSealDuration Duration
|
||||
// Maximum amount of time proposed deal StartEpoch can be in future
|
||||
MaxDealStartDelay Duration
|
||||
// The amount of time to wait for more deals to arrive before
|
||||
// publishing
|
||||
PublishMsgPeriod Duration
|
||||
// The maximum number of deals to include in a single PublishStorageDeals
|
||||
// message
|
||||
MaxDealsPerPublishMsg uint64
|
||||
// The maximum collateral that the provider will put up against a deal,
|
||||
// as a multiplier of the minimum collateral bound
|
||||
MaxProviderCollateralMultiplier uint64
|
||||
|
||||
// The maximum number of parallel online data transfers (storage+retrieval)
|
||||
SimultaneousTransfers uint64
|
||||
|
||||
Filter string
|
||||
RetrievalFilter string
|
||||
|
||||
RetrievalPricing *RetrievalPricing
|
||||
}
|
||||
|
||||
type RetrievalPricing struct {
|
||||
Strategy string // possible values: "default", "external"
|
||||
|
||||
Default *RetrievalPricingDefault
|
||||
External *RetrievalPricingExternal
|
||||
}
|
||||
|
||||
type RetrievalPricingExternal struct {
|
||||
// Path of the external script that will be run to price a retrieval deal.
|
||||
// This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "external".
|
||||
Path string
|
||||
}
|
||||
|
||||
type RetrievalPricingDefault struct {
|
||||
// VerifiedDealsFreeTransfer configures zero fees for data transfer for a retrieval deal
|
||||
// of a payloadCid that belongs to a verified storage deal.
|
||||
// This parameter is ONLY applicable if the retrieval pricing policy strategy has been configured to "default".
|
||||
// default value is true
|
||||
VerifiedDealsFreeTransfer bool
|
||||
}
|
||||
|
||||
type SealingConfig struct {
|
||||
// 0 = no limit
|
||||
MaxWaitDealsSectors uint64
|
||||
|
||||
// includes failed, 0 = no limit
|
||||
MaxSealingSectors uint64
|
||||
|
||||
// includes failed, 0 = no limit
|
||||
MaxSealingSectorsForDeals uint64
|
||||
|
||||
WaitDealsDelay Duration
|
||||
|
||||
AlwaysKeepUnsealedCopy bool
|
||||
|
||||
// Run sector finalization before submitting sector proof to the chain
|
||||
FinalizeEarly bool
|
||||
|
||||
// Whether to use available miner balance for sector collateral instead of sending it with each message
|
||||
CollateralFromMinerBalance bool
|
||||
// Minimum available balance to keep in the miner actor before sending it with messages
|
||||
AvailableBalanceBuffer types.FIL
|
||||
// Don't send collateral with messages even if there is no available balance in the miner actor
|
||||
DisableCollateralFallback bool
|
||||
|
||||
// enable / disable precommit batching (takes effect after nv13)
|
||||
BatchPreCommits bool
|
||||
// maximum precommit batch size - batches will be sent immediately above this size
|
||||
MaxPreCommitBatch int
|
||||
// how long to wait before submitting a batch after crossing the minimum batch size
|
||||
PreCommitBatchWait Duration
|
||||
// time buffer for forceful batch submission before sectors/deal in batch would start expiring
|
||||
PreCommitBatchSlack Duration
|
||||
|
||||
// enable / disable commit aggregation (takes effect after nv13)
|
||||
AggregateCommits bool
|
||||
// maximum batched commit size - batches will be sent immediately above this size
|
||||
MinCommitBatch int
|
||||
MaxCommitBatch int
|
||||
// how long to wait before submitting a batch after crossing the minimum batch size
|
||||
CommitBatchWait Duration
|
||||
// time buffer for forceful batch submission before sectors/deals in batch would start expiring
|
||||
CommitBatchSlack Duration
|
||||
|
||||
// network BaseFee below which to stop doing commit aggregation, instead
|
||||
// submitting proofs to the chain individually
|
||||
AggregateAboveBaseFee types.FIL
|
||||
|
||||
TerminateBatchMax uint64
|
||||
TerminateBatchMin uint64
|
||||
TerminateBatchWait Duration
|
||||
|
||||
// Keep this many sectors in sealing pipeline, start CC if needed
|
||||
// todo TargetSealingSectors uint64
|
||||
|
||||
// todo TargetSectors - stop auto-pleding new sectors after this many sectors are sealed, default CC upgrade for deals sectors if above
|
||||
}
|
||||
|
||||
type BatchFeeConfig struct {
|
||||
Base types.FIL
|
||||
PerSector types.FIL
|
||||
}
|
||||
|
||||
type MinerFeeConfig struct {
|
||||
MaxPreCommitGasFee types.FIL
|
||||
MaxCommitGasFee types.FIL
|
||||
|
||||
// maxBatchFee = maxBase + maxPerSector * nSectors
|
||||
MaxPreCommitBatchGasFee BatchFeeConfig
|
||||
MaxCommitBatchGasFee BatchFeeConfig
|
||||
|
||||
MaxTerminateGasFee types.FIL
|
||||
MaxWindowPoStGasFee types.FIL
|
||||
MaxPublishDealsFee types.FIL
|
||||
MaxMarketBalanceAddFee types.FIL
|
||||
}
|
||||
|
||||
type MinerAddressConfig struct {
|
||||
PreCommitControl []string
|
||||
CommitControl []string
|
||||
TerminateControl []string
|
||||
DealPublishControl []string
|
||||
|
||||
// DisableOwnerFallback disables usage of the owner address for messages
|
||||
// sent automatically
|
||||
DisableOwnerFallback bool
|
||||
// DisableWorkerFallback disables usage of the worker address for messages
|
||||
// sent automatically, if control addresses are configured.
|
||||
// A control address that doesn't have enough funds will still be chosen
|
||||
// over the worker address if this flag is set.
|
||||
DisableWorkerFallback bool
|
||||
}
|
||||
|
||||
// API contains configs for API endpoint
|
||||
type API struct {
|
||||
ListenAddress string
|
||||
RemoteListenAddress string
|
||||
Timeout Duration
|
||||
}
|
||||
|
||||
// Libp2p contains configs for libp2p
|
||||
type Libp2p struct {
|
||||
ListenAddresses []string
|
||||
AnnounceAddresses []string
|
||||
NoAnnounceAddresses []string
|
||||
BootstrapPeers []string
|
||||
ProtectedPeers []string
|
||||
|
||||
ConnMgrLow uint
|
||||
ConnMgrHigh uint
|
||||
ConnMgrGrace Duration
|
||||
}
|
||||
|
||||
type Pubsub struct {
|
||||
Bootstrapper bool
|
||||
DirectPeers []string
|
||||
IPColocationWhitelist []string
|
||||
RemoteTracer string
|
||||
}
|
||||
|
||||
type Chainstore struct {
|
||||
EnableSplitstore bool
|
||||
Splitstore Splitstore
|
||||
}
|
||||
|
||||
type Splitstore struct {
|
||||
ColdStoreType string
|
||||
HotStoreType string
|
||||
MarkSetType string
|
||||
|
||||
HotStoreMessageRetention uint64
|
||||
}
|
||||
|
||||
// // Full Node
|
||||
|
||||
type Metrics struct {
|
||||
Nickname string
|
||||
HeadNotifs bool
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
UseIpfs bool
|
||||
IpfsOnlineMode bool
|
||||
IpfsMAddr string
|
||||
IpfsUseForRetrieval bool
|
||||
SimultaneousTransfers uint64
|
||||
}
|
||||
|
||||
type Wallet struct {
|
||||
RemoteBackend string
|
||||
EnableLedger bool
|
||||
DisableLocal bool
|
||||
}
|
||||
|
||||
type FeeConfig struct {
|
||||
DefaultMaxFee types.FIL
|
||||
}
|
Loading…
Reference in New Issue
Block a user