[API] # Binding address for the Lotus API # # type: string # env var: LOTUS_API_LISTENADDRESS #ListenAddress = "/ip4/127.0.0.1/tcp/1234/http" # type: string # env var: LOTUS_API_REMOTELISTENADDRESS #RemoteListenAddress = "" # type: Duration # env var: LOTUS_API_TIMEOUT #Timeout = "30s" [Backup] # When set to true disables metadata log (.lotus/kvlog). This can save disk # space by reducing metadata redundancy. # # Note that in case of metadata corruption it might be much harder to recover # your node if metadata log is disabled # # type: bool # env var: LOTUS_BACKUP_DISABLEMETADATALOG #DisableMetadataLog = true [Logging] [Logging.SubsystemLevels] # env var: LOTUS_LOGGING_SUBSYSTEMLEVELS_EXAMPLE-SUBSYSTEM #example-subsystem = "INFO" [Libp2p] # Binding address for the libp2p host - 0 means random port. # Format: multiaddress; see https://multiformats.io/multiaddr/ # # type: []string # env var: LOTUS_LIBP2P_LISTENADDRESSES #ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0", "/ip4/0.0.0.0/udp/0/quic-v1", "/ip6/::/udp/0/quic-v1", "/ip4/0.0.0.0/udp/0/quic-v1/webtransport", "/ip6/::/udp/0/quic-v1/webtransport"] # Addresses to explicitally announce to other peers. If not specified, # all interface addresses are announced # Format: multiaddress # # type: []string # env var: LOTUS_LIBP2P_ANNOUNCEADDRESSES #AnnounceAddresses = [] # Addresses to not announce # Format: multiaddress # # type: []string # env var: LOTUS_LIBP2P_NOANNOUNCEADDRESSES #NoAnnounceAddresses = [] # When not disabled (default), lotus asks NAT devices (e.g., routers), to # open up an external port and forward it to the port lotus is running on. # When this works (i.e., when your router supports NAT port forwarding), # it makes the local lotus node accessible from the public internet # # type: bool # env var: LOTUS_LIBP2P_DISABLENATPORTMAP #DisableNatPortMap = false # ConnMgrLow is the number of connections that the basic connection manager # will trim down to. # # type: uint # env var: LOTUS_LIBP2P_CONNMGRLOW #ConnMgrLow = 150 # ConnMgrHigh is the number of connections that, when exceeded, will trigger # a connection GC operation. Note: protected/recently formed connections don't # count towards this limit. # # type: uint # env var: LOTUS_LIBP2P_CONNMGRHIGH #ConnMgrHigh = 180 # ConnMgrGrace is a time duration that new connections are immune from being # closed by the connection manager. # # type: Duration # env var: LOTUS_LIBP2P_CONNMGRGRACE #ConnMgrGrace = "20s" [Pubsub] # Run the node in bootstrap-node mode # # type: bool # env var: LOTUS_PUBSUB_BOOTSTRAPPER #Bootstrapper = false # type: string # env var: LOTUS_PUBSUB_REMOTETRACER #RemoteTracer = "" # Path to file that will be used to output tracer content in JSON format. # If present tracer will save data to defined file. # Format: file path # # type: string # env var: LOTUS_PUBSUB_JSONTRACER #JsonTracer = "" # Connection string for elasticsearch instance. # If present tracer will save data to elasticsearch. # Format: https://:@:/ # # type: string # env var: LOTUS_PUBSUB_ELASTICSEARCHTRACER #ElasticSearchTracer = "" # Name of elasticsearch index that will be used to save tracer data. # This property is used only if ElasticSearchTracer propery is set. # # type: string # env var: LOTUS_PUBSUB_ELASTICSEARCHINDEX #ElasticSearchIndex = "" # Auth token that will be passed with logs to elasticsearch - used for weighted peers score. # # type: string # env var: LOTUS_PUBSUB_TRACERSOURCEAUTH #TracerSourceAuth = "" [Client] # type: bool # env var: LOTUS_CLIENT_USEIPFS #UseIpfs = false # type: bool # env var: LOTUS_CLIENT_IPFSONLINEMODE #IpfsOnlineMode = false # type: string # env var: LOTUS_CLIENT_IPFSMADDR #IpfsMAddr = "" # type: bool # env var: LOTUS_CLIENT_IPFSUSEFORRETRIEVAL #IpfsUseForRetrieval = false # The maximum number of simultaneous data transfers between the client # and storage providers for storage deals # # type: uint64 # env var: LOTUS_CLIENT_SIMULTANEOUSTRANSFERSFORSTORAGE #SimultaneousTransfersForStorage = 20 # The maximum number of simultaneous data transfers between the client # and storage providers for retrieval deals # # type: uint64 # env var: LOTUS_CLIENT_SIMULTANEOUSTRANSFERSFORRETRIEVAL #SimultaneousTransfersForRetrieval = 20 # Require that retrievals perform no on-chain operations. Paid retrievals # without existing payment channels with available funds will fail instead # of automatically performing on-chain operations. # # type: bool # env var: LOTUS_CLIENT_OFFCHAINRETRIEVAL #OffChainRetrieval = false [Wallet] # type: string # env var: LOTUS_WALLET_REMOTEBACKEND #RemoteBackend = "" # type: bool # env var: LOTUS_WALLET_ENABLELEDGER #EnableLedger = false # type: bool # env var: LOTUS_WALLET_DISABLELOCAL #DisableLocal = false [Fees] # type: types.FIL # env var: LOTUS_FEES_DEFAULTMAXFEE #DefaultMaxFee = "0.07 FIL" [Chainstore] # type: bool # env var: LOTUS_CHAINSTORE_ENABLESPLITSTORE EnableSplitstore = true [Chainstore.Splitstore] # ColdStoreType specifies the type of the coldstore. # It can be "discard" (default) for discarding cold blocks, "messages" to store only messages or "universal" to store all chain state.. # # type: string # env var: LOTUS_CHAINSTORE_SPLITSTORE_COLDSTORETYPE #ColdStoreType = "discard" # HotStoreType specifies the type of the hotstore. # Only currently supported value is "badger". # # type: string # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTORETYPE #HotStoreType = "badger" # MarkSetType specifies the type of the markset. # It can be "map" for in memory marking or "badger" (default) for on-disk marking. # # type: string # env var: LOTUS_CHAINSTORE_SPLITSTORE_MARKSETTYPE #MarkSetType = "badger" # HotStoreMessageRetention specifies the retention policy for messages, in finalities beyond # the compaction boundary; default is 0. # # type: uint64 # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTOREMESSAGERETENTION #HotStoreMessageRetention = 0 # HotStoreFullGCFrequency specifies how often to perform a full (moving) GC on the hotstore. # A value of 0 disables, while a value 1 will do full GC in every compaction. # Default is 20 (about once a week). # # type: uint64 # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTOREFULLGCFREQUENCY #HotStoreFullGCFrequency = 20 # HotStoreMaxSpaceTarget sets a target max disk size for the hotstore. Splitstore GC # will run moving GC if disk utilization gets within a threshold (150 GB) of the target. # Splitstore GC will NOT run moving GC if the total size of the move would get # within 50 GB of the target, and instead will run a more aggressive online GC. # If both HotStoreFullGCFrequency and HotStoreMaxSpaceTarget are set then splitstore # GC will trigger moving GC if either configuration condition is met. # A reasonable minimum is 2x fully GCed hotstore size + 50 G buffer. # At this minimum size moving GC happens every time, any smaller and moving GC won't # be able to run. In spring 2023 this minimum is ~550 GB. # # type: uint64 # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTOREMAXSPACETARGET #HotStoreMaxSpaceTarget = 650000000000 # When HotStoreMaxSpaceTarget is set Moving GC will be triggered when total moving size # exceeds HotstoreMaxSpaceTarget - HotstoreMaxSpaceThreshold # # type: uint64 # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTOREMAXSPACETHRESHOLD #HotStoreMaxSpaceThreshold = 150000000000 # Safety buffer to prevent moving GC from overflowing disk when HotStoreMaxSpaceTarget # is set. Moving GC will not occur when total moving size exceeds # HotstoreMaxSpaceTarget - HotstoreMaxSpaceSafetyBuffer # # type: uint64 # env var: LOTUS_CHAINSTORE_SPLITSTORE_HOTSTOREMAXSPACESAFETYBUFFER #HotstoreMaxSpaceSafetyBuffer = 50000000000 [Cluster] # EXPERIMENTAL. config to enabled node cluster with raft consensus # # type: bool # env var: LOTUS_CLUSTER_CLUSTERMODEENABLED #ClusterModeEnabled = false # A folder to store Raft's data. # # type: string # env var: LOTUS_CLUSTER_DATAFOLDER #DataFolder = "" # InitPeersetMultiAddr provides the list of initial cluster peers for new Raft # peers (with no prior state). It is ignored when Raft was already # initialized or when starting in staging mode. # # type: []string # env var: LOTUS_CLUSTER_INITPEERSETMULTIADDR #InitPeersetMultiAddr = [] # LeaderTimeout specifies how long to wait for a leader before # failing an operation. # # type: Duration # env var: LOTUS_CLUSTER_WAITFORLEADERTIMEOUT #WaitForLeaderTimeout = "15s" # NetworkTimeout specifies how long before a Raft network # operation is timed out # # type: Duration # env var: LOTUS_CLUSTER_NETWORKTIMEOUT #NetworkTimeout = "1m40s" # CommitRetries specifies how many times we retry a failed commit until # we give up. # # type: int # env var: LOTUS_CLUSTER_COMMITRETRIES #CommitRetries = 1 # How long to wait between retries # # type: Duration # env var: LOTUS_CLUSTER_COMMITRETRYDELAY #CommitRetryDelay = "200ms" # BackupsRotate specifies the maximum number of Raft's DataFolder # copies that we keep as backups (renaming) after cleanup. # # type: int # env var: LOTUS_CLUSTER_BACKUPSROTATE #BackupsRotate = 6 # Tracing enables propagation of contexts across binary boundaries. # # type: bool # env var: LOTUS_CLUSTER_TRACING #Tracing = false [Fevm] # EnableEthRPC enables eth_ rpc, and enables storing a mapping of eth transaction hashes to filecoin message Cids. # This will also enable the RealTimeFilterAPI and HistoricFilterAPI by default, but they can be disabled by config options above. # # type: bool # env var: LOTUS_FEVM_ENABLEETHRPC #EnableEthRPC = false # EnableActorEventsAPI enables the Actor events API that enables clients to consume events emitted by (smart contracts + built-in Actors). # This will also enable the RealTimeFilterAPI and HistoricFilterAPI by default, but they can be disabled by config options above. # # type: bool # env var: LOTUS_FEVM_ENABLEACTOREVENTSAPI #EnableActorEventsAPI = false # EthTxHashMappingLifetimeDays the transaction hash lookup database will delete mappings that have been stored for more than x days # Set to 0 to keep all mappings # # type: int # env var: LOTUS_FEVM_ETHTXHASHMAPPINGLIFETIMEDAYS #EthTxHashMappingLifetimeDays = 0 [Fevm.Events] # DisableRealTimeFilterAPI will disable the RealTimeFilterAPI that can create and query filters for actor events as they are emitted. # The API is enabled when EnableEthRPC or EnableActorEventsAPI is true, but can be disabled selectively with this flag. # # type: bool # env var: LOTUS_FEVM_EVENTS_DISABLEREALTIMEFILTERAPI #DisableRealTimeFilterAPI = false # DisableHistoricFilterAPI will disable the HistoricFilterAPI that can create and query filters for actor events # that occurred in the past. HistoricFilterAPI maintains a queryable index of events. # The API is enabled when EnableEthRPC or EnableActorEventsAPI is true, but can be disabled selectively with this flag. # # type: bool # env var: LOTUS_FEVM_EVENTS_DISABLEHISTORICFILTERAPI #DisableHistoricFilterAPI = false # FilterTTL specifies the time to live for actor event filters. Filters that haven't been accessed longer than # this time become eligible for automatic deletion. # # type: Duration # env var: LOTUS_FEVM_EVENTS_FILTERTTL #FilterTTL = "24h0m0s" # MaxFilters specifies the maximum number of filters that may exist at any one time. # # type: int # env var: LOTUS_FEVM_EVENTS_MAXFILTERS #MaxFilters = 100 # MaxFilterResults specifies the maximum number of results that can be accumulated by an actor event filter. # # type: int # env var: LOTUS_FEVM_EVENTS_MAXFILTERRESULTS #MaxFilterResults = 10000 # MaxFilterHeightRange specifies the maximum range of heights that can be used in a filter (to avoid querying # the entire chain) # # type: uint64 # env var: LOTUS_FEVM_EVENTS_MAXFILTERHEIGHTRANGE #MaxFilterHeightRange = 2880 # DatabasePath is the full path to a sqlite database that will be used to index actor events to # support the historic filter APIs. If the database does not exist it will be created. The directory containing # the database must already exist and be writeable. If a relative path is provided here, sqlite treats it as # relative to the CWD (current working directory). # # type: string # env var: LOTUS_FEVM_EVENTS_DATABASEPATH #DatabasePath = "" [Index] # EXPERIMENTAL FEATURE. USE WITH CAUTION # EnableMsgIndex enables indexing of messages on chain. # # type: bool # env var: LOTUS_INDEX_ENABLEMSGINDEX #EnableMsgIndex = false [FaultReporter] # EnableConsensusFaultReporter controls whether the node will monitor and # report consensus faults. When enabled, the node will watch for malicious # behaviors like double-mining and parent grinding, and submit reports to the # network. This can earn reporter rewards, but is not guaranteed. Nodes should # enable fault reporting with care, as it may increase resource usage, and may # generate gas fees without earning rewards. # # type: bool # env var: LOTUS_FAULTREPORTER_ENABLECONSENSUSFAULTREPORTER #EnableConsensusFaultReporter = false # ConsensusFaultReporterDataDir is the path where fault reporter state will be # persisted. This directory should have adequate space and permissions for the # node process. # # type: string # env var: LOTUS_FAULTREPORTER_CONSENSUSFAULTREPORTERDATADIR #ConsensusFaultReporterDataDir = "" # ConsensusFaultReporterAddress is the wallet address used for submitting # ReportConsensusFault messages. It will pay for gas fees, and receive any # rewards. This address should have adequate funds to cover gas fees. # # type: string # env var: LOTUS_FAULTREPORTER_CONSENSUSFAULTREPORTERADDRESS #ConsensusFaultReporterAddress = ""