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