; Example configuration for lnd. ; ; The default location for this file is in ~/.lnd/lnd.conf on POSIX OSes, ; $LOCALAPPDATA/Lnd/lnd.conf on Windows, ; ~/Library/Application Support/Lnd/lnd.conf on Mac OS and $home/lnd/lnd.conf on ; Plan9. ; The default location of this file can be overwritten by specifying the ; --configfile= flag when starting lnd. ; ; boolean values can be specified as true/false or 1/0. Per default ; booleans are always set to false. ; If only one value is specified for an option, then this is also the ; default value used by lnd. In case of multiple (example) values, the default ; is explicitly mentioned. ; If the part after the equal sign is empty then lnd has no default ; for this option. [Application Options] ; The directory that lnd stores all wallet, chain, and channel related data ; within The default is ~/.lnd/data on POSIX OSes, $LOCALAPPDATA/Lnd/data on ; Windows, ~/Library/Application Support/Lnd/data on Mac OS, and $home/lnd/data ; on Plan9. Environment variables are expanded so they may be used. NOTE: ; Windows environment variables are typically %VARIABLE%, but they must be ; accessed with $VARIABLE here. Also, ~ is expanded to $LOCALAPPDATA on Windows. ; datadir=~/.lnd/data ; The directory that logs are stored in. The logs are auto-rotated by default. ; Rotated logs are compressed in place. ; logdir=~/.lnd/logs ; Number of logfiles that the log rotation should keep. Setting it to 0 disables deletion of old log files. ; maxlogfiles=3 ; ; Max log file size in MB before it is rotated. ; maxlogfilesize=10 ; Time after which an RPCAcceptor will time out and return false if ; it hasn't yet received a response. ; acceptortimeout=15s ; Path to TLS certificate for lnd's RPC and REST services. ; tlscertpath=~/.lnd/tls.cert ; Path to TLS private key for lnd's RPC and REST services. ; tlskeypath=~/.lnd/tls.key ; Adds an extra ip to the generated certificate. Setting multiple tlsextraip= entries is allowed. ; (old tls files must be deleted if changed) ; tlsextraip= ; Adds an extra domain to the generate certificate. Setting multiple tlsextradomain= entries is allowed. ; (old tls files must be deleted if changed) ; Default: ; tlsextradomain= ; Example: (option can be specified multiple times): ; tlsextradomain=my-node-domain.com ; If set, then all certs will automatically be refreshed if they're close to ; expiring, or if any parameters related to extra IPs or domains in the cert ; change. ; tlsautorefresh=false ; The duration from generating the self signed certificate to the certificate ; expiry date. Valid time units are {s, m, h}. ; The below value is about 14 months (14 * 30 * 24 = 10080) ; tlscertduration=10080h ; Do not include the interface IPs or the system hostname in TLS certificate, ; use first --tlsextradomain as Common Name instead, if set. ; tlsdisableautofill=false ; If set, the TLS private key will be encrypted to the node's seed. ; tlsencryptkey=false ; A list of domains for lnd to periodically resolve, and advertise the resolved ; IPs for the backing node. This is useful for users that only have a dynamic IP, ; or want to expose the node at a domain. ; Default: ; externalhosts= ; Example (option can be specified multiple times): ; externalhosts=my-node-domain.com ; externalhosts=my-second-domain.com ; Sets the directory to store Let's Encrypt certificates within ; letsencryptdir=~/.lnd/letsencrypt ; The IP:port on which lnd will listen for Let's Encrypt challenges. Let's ; Encrypt will always try to contact on port 80. Often non-root processes are ; not allowed to bind to ports lower than 1024. This configuration option allows ; a different port to be used, but must be used in combination with port ; forwarding from port 80. This configuration can also be used to specify ; another IP address to listen on, for example an IPv6 address. ; Default: ; letsencryptlisten=:80 ; Example: ; letsencryptlisten=localhost:8080 ; Request a Let's Encrypt certificate for this domain. Note that the certificate ; is only requested and stored when the first rpc connection comes in. ; Default: ; letsencryptdomain= ; Example: ; letsencryptdomain=example.com ; Disable macaroon authentication. Macaroons are used as bearer credentials to ; authenticate all RPC access. If one wishes to opt out of macaroons, uncomment ; and set to true the line below. ; no-macaroons=false ; Enable free list syncing for the default bbolt database. This will decrease ; start up time, but can result in performance degradation for very large ; databases, and also result in higher memory usage. If "free list corruption" ; is detected, then this flag may resolve things. ; sync-freelist=false ; Path to write the admin macaroon for lnd's RPC and REST services if it ; doesn't exist. This can be set if one wishes to store the admin macaroon in a ; distinct location. By default, it is stored within lnd's network directory. ; Applications that are able to read this file, gain admin macaroon access. ; Default: ; adminmacaroonpath=~/.lnd/data/chain/bitcoin/${network}/admin.macaroon ; Example: ; adminmacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon ; Path to write the read-only macaroon for lnd's RPC and REST services if it ; doesn't exist. This can be set if one wishes to store the read-only macaroon ; in a distinct location. The read only macaroon allows users which can read ; the file to access RPCs which don't modify the state of the daemon. By ; default, it is stored within lnd's network directory. ; Default: ; readonlymacaroonpath=~/.lnd/data/chain/bitcoin/${network}/readonly.macaroon ; Example: ; readonlymacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/readonly.macaroon ; Path to write the invoice macaroon for lnd's RPC and REST services if it ; doesn't exist. This can be set if one wishes to store the invoice macaroon in ; a distinct location. By default, it is stored within lnd's network directory. ; The invoice macaroon allows users which can read the file to gain read and ; write access to all invoice related RPCs. ; Default: ; invoicemacaroonpath=~/.lnd/data/chain/bitcoin/${network}/invoice.macaroon ; Example: ; invoicemacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/invoice.macaroon ; The strategy to use for selecting coins for wallet transactions. Options are ; 'largest' and 'random'. ; coin-selection-strategy=largest ; A period to wait before for closing channels with outgoing htlcs that have ; timed out and are a result of this nodes initiated payments. In addition to ; our current block based deadline, if specified this grace period will also be ; taken into account. Valid time units are {s, m, h}. ; Default: ; payments-expiration-grace-period=0s ; Example: ; payments-expiration-grace-period=30s ; Specify the interfaces to listen on for p2p connections. One listen ; address per line. ; Default: ; listen=:9735 ; Example (option can be specified multiple times): ; All ipv4 on port 9735: ; listen=0.0.0.0:9735 ; On all ipv4 interfaces on port 9735 and ipv6 localhost port 9736: ; listen=0.0.0.0:9735 ; listen=[::1]:9736 ; Disable listening for incoming p2p connections. This will override all ; listeners. ; nolisten=false ; Specify the interfaces to listen on for gRPC connections. One listen ; address per line. ; Default: ; rpclisten=localhost:10009 ; Example (option can be specified multiple times): ; On ipv4 localhost port 10009 and ipv6 port 10010: ; rpclisten=localhost:10009 ; rpclisten=[::1]:10010 ; On an Unix socket: ; rpclisten=unix:///var/run/lnd/lnd-rpclistener.sock ; Specify the interfaces to listen on for REST connections. One listen ; address per line. ; Default: ; restlisten=localhost:8080 ; Example (option can be specified multiple times): ; All ipv4 interfaces on port 8080: ; restlisten=0.0.0.0:8080 ; On ipv4 localhost port 80 and 443: ; restlisten=localhost:80 ; restlisten=localhost:443 ; On an Unix socket: ; restlisten=unix:///var/run/lnd-restlistener.sock ; A series of domains to allow cross origin access from. This controls the CORs ; policy of the REST RPC proxy. ; Default: ; restcors= ; Example (option can be specified multiple times): ; restcors=https://my-special-site.com ; Adding an external IP will advertise your node to the network. This signals ; that your node is available to accept incoming channels. If you don't wish to ; advertise your node, this value doesn't need to be set. Unless specified ; (with host:port notation), the default port (9735) will be added to the ; address. ; externalip= ; ; Instead of explicitly stating your external IP address, you can also enable ; UPnP or NAT-PMP support on the daemon. Both techniques will be tried and ; require proper hardware support. In order to detect this hardware support, ; `lnd` uses a dependency that retrieves the router's gateway address by using ; different built-in binaries in each platform. Therefore, it is possible that ; we are unable to detect the hardware and `lnd` will exit with an error ; indicating this. This option will automatically retrieve your external IP ; address, even after it has changed in the case of dynamic IPs, and advertise ; it to the network using the ports the daemon is listening on. This does not ; support devices behind multiple NATs. ; nat=false ; Disable REST API. ; norest=false ; Disable TLS for the REST API. ; no-rest-tls=false ; Specify peer(s) to connect to first. ; addpeer= ; The ping interval for REST based WebSocket connections, set to 0 to disable ; sending ping messages from the server side. Valid time units are {s, m, h}. ; ws-ping-interval=30s ; The time we wait for a pong response message on REST based WebSocket ; connections before the connection is closed as inactive. Valid time units are ; {s, m, h}. ; ws-pong-wait=5s ; Shortest backoff when reconnecting to persistent peers. Valid time units are ; {s, m, h}. ; minbackoff=1s ; Longest backoff when reconnecting to persistent peers. Valid time units are ; {s, m, h}. ; maxbackoff=1h ; The timeout value for network connections. ; Valid units are {ms, s, m, h}. ; connectiontimeout=2m ; Debug logging level. ; Valid levels are {trace, debug, info, warn, error, critical} ; You may also specify ,=,=,... ; to set log level for individual subsystems. Use lncli debuglevel --show to ; list available subsystems. ; Default: ; debuglevel=info ; Example: ; debuglevel=debug,PEER=info ; Write CPU profile to the specified file. ; cpuprofile= ; Enable HTTP profiling on given port -- NOTE port must be between 1024 and ; 65536. The profile can be access at: http://localhost:/debug/pprof/. ; profile= ; Enable a blocking profile to be obtained from the profiling port. A blocking ; profile can show where goroutines are blocking (stuck on mutexes, I/O, etc). ; This takes a value from 0 to 1, with 0 turning off the setting, and 1 sampling ; every blocking event (it's a rate value). ; blockingprofile=0 ; Enable a mutex profile to be obtained from the profiling port. A mutex ; profile can show where goroutines are blocked on mutexes, and which mutexes ; have high contention. This takes a value from 0 to 1, with 0 turning off the ; setting, and 1 sampling every mutex event (it's a rate value). ; mutexprofile=0 ; DEPRECATED: Allows the rpcserver to intentionally disconnect from peers with ; open channels. THIS FLAG WILL BE REMOVED IN 0.10.0. ; unsafe-disconnect=false ; Causes a link to replay the adds on its commitment txn after starting up, this ; enables testing of the sphinx replay logic. ; unsafe-replay=false ; The maximum number of incoming pending channels permitted per peer. ; maxpendingchannels=1 ; The target location of the channel backup file. ; Default: ; backupfilepath=~/.lnd/data/chain/bitcoin/${network}/channel.backup ; Example: ; backupfilepath=~/.lnd/data/chain/bitcoin/mainnet/channel.backup ; The maximum capacity of the block cache in bytes. Increasing this will result ; in more blocks being kept in memory but will increase performance when the ; same block is required multiple times. ; The default value below is 20 MB (1024 * 1024 * 20) ; blockcachesize=20971520 ; DEPRECATED: Use 'fee.url' option. Optional URL for external fee estimation. ; If no URL is specified, the method for fee estimation will depend on the ; chosen backend and network. Must be set for neutrino on mainnet. ; Default: ; feeurl= ; Example: ; feeurl=https://nodes.lightning.computer/fees/v1/btc-fee-estimates.json ; If true, then automatic network bootstrapping will not be attempted. This ; means that your node won't attempt to automatically seek out peers on the ; network. ; nobootstrap=false ; If true, NO SEED WILL BE EXPOSED -- EVER, AND THE WALLET WILL BE ENCRYPTED ; USING THE DEFAULT PASSPHRASE. THIS FLAG IS ONLY FOR TESTING AND SHOULD NEVER ; BE USED ON MAINNET. ; noseedbackup=false ; The full path to a file (or pipe/device) that contains the password for ; unlocking the wallet; if set, no unlocking through RPC is possible and lnd ; will exit if no wallet exists or the password is incorrect; if ; wallet-unlock-allow-create is also set then lnd will ignore this flag if no ; wallet exists and allow a wallet to be created through RPC. ; Default: ; wallet-unlock-password-file= ; Example: ; wallet-unlock-password-file=/tmp/example.password ; Don't fail with an error if wallet-unlock-password-file is set but no wallet ; exists yet. Not recommended for auto-provisioned or high-security systems ; because the wallet creation RPC is unauthenticated and an attacker could ; inject a seed while lnd is in that state. ; wallet-unlock-allow-create=false ; Removes all transaction history from the on-chain wallet on startup, forcing a ; full chain rescan starting at the wallet's birthday. Implements the same ; functionality as btcwallet's dropwtxmgr command. Should be set to false after ; successful execution to avoid rescanning on every restart of lnd. ; reset-wallet-transactions=false ; The smallest channel size (in satoshis) that we should accept. Incoming ; channels smaller than this will be rejected. ; minchansize=20000 ; The largest channel size (in satoshis) that we should accept. Incoming ; channels larger than this will be rejected. For non-Wumbo channels this ; limit remains 16777215 satoshis by default as specified in BOLT-0002. ; For wumbo channels this limit is 1,000,000,000 satoshis (10 BTC). ; Set this config option explicitly to restrict your maximum channel size ; to better align with your risk tolerance ; Default: ; maxchansize= ; Example: ; maxchansize=10000000 ; The target number of blocks in which a cooperative close initiated by a remote ; peer should be confirmed. This target is used to estimate the starting fee ; rate that will be used during fee negotiation with the peer. This target is ; also used for cooperative closes initiated locally if the --conf_target for ; the channel closure is not set. ; coop-close-target-confs=6 ; The maximum time that is allowed to pass between receiving a channel state ; update and signing the next commitment. Setting this to a longer duration ; allows for more efficient channel operations at the cost of latency. This is ; capped at 1 hour. ; channel-commit-interval=50ms ; The maximum time that is allowed to pass while waiting for the remote party ; to revoke a locally initiated commitment state. Setting this to a longer ; duration if a slow response is expected from the remote party or large ; number of payments are attempted at the same time. ; pending-commit-interval=1m ; The maximum number of channel state updates that is accumulated before signing ; a new commitment. ; channel-commit-batch-size=10 ; Keeps persistent record of all failed payment attempts for successfully ; settled payments. ; keep-failed-payment-attempts=false ; Persistently store the final resolution of incoming htlcs. ; store-final-htlc-resolutions=false ; The default max_htlc applied when opening or accepting channels. This value ; limits the number of concurrent HTLCs that the remote party can add to the ; commitment. The maximum possible value is 483. ; default-remote-max-htlcs=483 ; The duration that a peer connection must be stable before attempting to send a ; channel update to re-enable or cancel a pending disables of the peer's channels ; on the network. ; chan-enable-timeout=19m ; The duration that must elapse after first detecting that an already active ; channel is actually inactive and sending channel update disabling it to the ; network. The pending disable can be canceled if the peer reconnects and becomes ; stable for chan-enable-timeout before the disable update is sent. ; chan-disable-timeout=20m ; The polling interval between attempts to detect if an active channel has become ; inactive due to its peer going offline. ; chan-status-sample-interval=1m ; Disable queries from the height-hint cache to try to recover channels stuck in ; the pending close state. Disabling height hint queries may cause longer chain ; rescans, resulting in a performance hit. Unset this after channels are unstuck ; so you can get better performance again. ; height-hint-cache-query-disable=false ; The polling interval between historical graph sync attempts. Each historical ; graph sync attempt ensures we reconcile with the remote peer's graph from the ; genesis block. ; historicalsyncinterval=1h ; If true, will not reply with historical data that matches the range specified ; by a remote peer's gossip_timestamp_filter. Doing so will result in lower ; memory and bandwidth requirements. ; ignore-historical-gossip-filters=false ; If true, lnd will not accept channel opening requests with non-zero push ; amounts. This should prevent accidental pushes to merchant nodes. ; rejectpush=false ; If true, lnd will not forward any HTLCs that are meant as onward payments. This ; option will still allow lnd to send HTLCs and receive HTLCs but lnd won't be ; used as a hop. ; rejecthtlc=false ; If true, all HTLCs will be held until they are handled by an interceptor ; requireinterceptor=false ; If true, lnd will also allow setting positive inbound fees. By default, lnd ; only allows to set negative inbound fees (an inbound "discount") to remain ; backwards compatible with senders whose implementations do not yet support ; inbound fees. Therefore, you should ONLY set this setting if you know what you ; are doing. [experimental] ; accept-positive-inbound-fees=false ; If true, will apply a randomized staggering between 0s and 30s when ; reconnecting to persistent peers on startup. The first 10 reconnections will be ; attempted instantly, regardless of the flag's value ; stagger-initial-reconnect=false ; The maximum number of blocks funds could be locked up for when forwarding ; payments. ; max-cltv-expiry=2016 ; The maximum percentage of total funds that can be allocated to a channel's ; commitment fee. This only applies for the initiator of the channel. Valid ; values are within [0.1, 1]. ; max-channel-fee-allocation=0.5 ; The maximum fee rate in sat/vbyte that will be used for commitments of ; channels of the anchors type. Must be large enough to ensure transaction ; propagation ; max-commit-fee-rate-anchors=10 ; A threshold defining the maximum amount of dust a given channel can have ; after which forwarding and sending dust HTLC's to and from the channel will ; fail. This amount is expressed in satoshis. ; dust-threshold=500000 ; If true, lnd will abort committing a migration if it would otherwise have been ; successful. This leaves the database unmodified, and still compatible with the ; previously active version of lnd. ; dry-run-migration=false ; If true, option upfront shutdown script will be enabled. If peers that we open ; channels with support this feature, we will automatically set the script to ; which cooperative closes should be paid out to on channel open. This offers the ; partial protection of a channel peer disconnecting from us if cooperative ; close is attempted with a different script. ; enable-upfront-shutdown=false ; If true, spontaneous payments through keysend will be accepted. ; This is a temporary solution until AMP is implemented which is expected to be soon. ; This option will then become deprecated in favor of AMP. ; accept-keysend=false ; If non-zero, keysend payments are accepted but not immediately settled. If the ; payment isn't settled manually after the specified time, it is canceled ; automatically. [experimental] ; Default: ; keysend-hold-time=0s ; Example: ; keysend-hold-time=2s ; If true, spontaneous payments through AMP will be accepted. Payments to AMP ; invoices will be accepted regardless of this setting. ; accept-amp=false ; If true, we'll attempt to garbage collect canceled invoices upon start. ; gc-canceled-invoices-on-startup=false ; If true, we'll delete newly canceled invoices on the fly. ; gc-canceled-invoices-on-the-fly=false ; If true, our node will allow htlc forwards that arrive and depart on the same ; channel. ; allow-circular-route=false ; Time in milliseconds between each release of announcements to the network ; trickledelay=90000 ; The number of peers that we should receive new graph updates from. This option ; can be tuned to save bandwidth for light clients or routing nodes. ; numgraphsyncpeers=3 ; The alias your node will use, which can be up to 32 UTF-8 characters in ; length. ; Default: ; alias= ; Example: ; alias=My Lightning ☇ ; The color of the node in hex format, used to customize node appearance in ; intelligence services. ; color=#3399FF ; The maximum duration that the server will wait before timing out reading ; the headers of an HTTP request. ; http-header-timeout=5s [fee] ; Optional URL for external fee estimation. If no URL is specified, the method ; for fee estimation will depend on the chosen backend and network. Must be set ; for neutrino on mainnet. ; Default: ; fee.url= ; Example: ; fee.url=https://nodes.lightning.computer/fees/v1/btc-fee-estimates.json ; The minimum interval in which fees will be updated from the specified fee URL. ; fee.min-update-timeout=5m ; The maximum interval in which fees will be updated from the specified fee URL. ; fee.max-update-timeout=20m [prometheus] ; If true, lnd will start the Prometheus exporter. Prometheus flags are ; behind a build/compile flag and are not available by default. lnd must be built ; with the monitoring tag; `make && make install tags=monitoring` to activate them. ; prometheus.enable=false ; Specify the interface to listen on for Prometheus connections. ; Default: ; prometheus.listen=127.0.0.1:8989 ; Example: ; prometheus.listen=0.0.0.0:8989 ; If true, then we'll export additional information that allows users to plot ; the processing latency, and total time spent across each RPC calls+service. ; This generates additional memory load for the Prometheus server, and will end ; up using more disk space over time. ; prometheus.perfhistograms=false [Bitcoin] ; DEPRECATED: If the Bitcoin chain should be active. This field is now ignored ; since only the Bitcoin chain is supported. ; bitcoin.active=false ; The directory to store the chain's data within. ; bitcoin.chaindir=~/.lnd/data/chain/bitcoin ; Use Bitcoin's main network. ; bitcoin.mainnet=false ; Use Bitcoin's test network. ; bitcoin.testnet=false ; ; Use Bitcoin's simulation test network ; bitcoin.simnet=false ; Use Bitcoin's regression test network ; bitcoin.regtest=false ; Use Bitcoin's signet test network ; bitcoin.signet=false ; Connect to a custom signet network defined by this challenge instead of using ; the global default signet test network -- Can be specified multiple times ; bitcoin.signetchallenge= ; Specify a seed node for the signet network instead of using the global default ; signet network seed nodes ; Default: ; bitcoin.signetseednode= ; Example: ; bitcoin.signetseednode=123.45.67.89 ; Specify the chain back-end. Options are btcd, bitcoind and neutrino. ; ; NOTE: Please note that switching between a full back-end (btcd/bitcoind) and ; a light back-end (neutrino) is not supported. ; Default: ; bitcoin.node=btcd ; Example: ; bitcoin.node=bitcoind ; bitcoin.node=neutrino ; The default number of confirmations a channel must have before it's considered ; open. We'll require any incoming channel requests to wait this many ; confirmations before we consider the channel active. If this is not set, we ; will scale the value linear to the channel size between 3 and 6. ; The maximmum value of 6 confs is applied to all channels larger than ; wumbo size (16777215 sats). The minimum value of 3 is applied to all channels ; smaller than 8388607 sats (16777215 * 3 / 6). ; Default: ; bitcoin.defaultchanconfs=[3; 6] ; Example: ; bitcoin.defaultchanconfs=3 ; The default number of blocks we will require our channel counterparty to wait ; before accessing its funds in case of unilateral close. If this is not set, we ; will scale the value linear to the channel size between 144 and 2016. ; The maximum value of 2016 blocks is applied to all channels larger than ; wumbo size (16777215). The minimum value of 144 is applied to all channels ; smaller than 1198372 sats (16777215 * 144 / 2016). ; Default: ; bitcoin.defaultremotedelay=[144; 2016] ; Example: ; bitcoin.defaultremotedelay=144 ; The maximum number of blocks we will limit the wait that our own funds are ; encumbered by in the case when our node unilaterally closes. If a remote peer ; proposes a channel with a delay above this amount, lnd will reject the ; channel. ; bitcoin.maxlocaldelay=2016 ; The smallest HTLC we are willing to accept on our channels, in millisatoshi. ; bitcoin.minhtlc=1 ; The smallest HTLC we are willing to send out on our channels, in millisatoshi. ; bitcoin.minhtlcout=1000 ; The base fee in millisatoshi we will charge for forwarding payments on our ; channels. ; bitcoin.basefee=1000 ; The fee rate used when forwarding payments on our channels. The total fee ; charged is basefee + (amount * feerate / 1000000), where amount is the ; forwarded amount. ; bitcoin.feerate=1 ; The CLTV delta we will subtract from a forwarded HTLC's timelock value. ; bitcoin.timelockdelta=80 ; The seed DNS server(s) to use for initial peer discovery. Must be specified as ; a '[,]' tuple where the SOA address is needed ; for DNS resolution through Tor but is optional for clearnet users. Multiple ; tuples can be specified, will overwrite the default seed servers. ; The default seed servers are: ; Default: ; mainnet: ; bitcoin.dnsseed=nodes.lightning.directory,soa.nodes.lightning.directory ; bitcoin.dnsseed=lseed.bitcoinstats.com ; testnet: ; bitcoin.dnsseed=test.nodes.lightning.directory,soa.nodes.lightning.directory ; ; Example for custom DNS servers: ; bitcoin.dnsseed=seed1.test.lightning ; bitcoin.dnsseed=seed2.test.lightning,soa.seed2.test.lightning [Btcd] ; The base directory that contains the node's data, logs, configuration file, ; etc. ; btcd.dir=~/.btcd ; The host that your local btcd daemon is listening on. By default, this ; setting is assumed to be localhost with the default port for the current ; network. ; btcd.rpchost=localhost ; Username for RPC connections to btcd. By default, lnd will attempt to ; automatically obtain the credentials, so this likely won't need to be set ; (other than for simnet mode). ; Default: ; btcd.rpcuser= ; Example: ; btcd.rpcuser=kek ; Password for RPC connections to btcd. By default, lnd will attempt to ; automatically obtain the credentials, so this likely won't need to be set ; (other than for simnet mode). ; Default: ; btcd.rpcpass= ; Example: ; btcd.rpcpass=kek ; File containing the daemon's certificate file. This only needs to be set if ; the node isn't on the same host as lnd. ; btcd.rpccert=~/.btcd/rpc.cert ; The raw bytes of the daemon's PEM-encoded certificate chain which will be used ; to authenticate the RPC connection. This only needs to be set if the btcd ; node is on a remote host. ; btcd.rawrpccert= [Bitcoind] ; The base directory that contains the node's data, logs, configuration file, ; etc. ; bitcoind.dir=~/.bitcoin ; Configuration filepath. ; Default: ; bitcoind.config= ; Example: ; bitcoind.config=~/.bitcoin/bitcoin.conf ; Authentication cookie file for RPC connections. ; Default: ; bitcoind.rpccookie= ; Example: ; bitcoind.rpccookie=~/.bitcoin/.cookie ; The host that your local bitcoind daemon is listening on. By default, this ; setting is assumed to be localhost with the default port for the current ; network. ; bitcoind.rpchost=localhost ; Username for RPC connections to bitcoind. By default, lnd will attempt to ; automatically obtain the credentials, so this likely won't need to be set ; (other than for a remote bitcoind instance). ; Default: ; bitcoind.rpcuser= ; Example: ; bitcoind.rpcuser=kek ; Password for RPC connections to bitcoind. By default, lnd will attempt to ; automatically obtain the credentials, so this likely won't need to be set ; (other than for a remote bitcoind instance). ; Default: ; bitcoind.rpcpass= ; Example: ; bitcoind.rpcpass=kek ; ZMQ socket which sends rawblock and rawtx notifications from bitcoind. By ; default, lnd will attempt to automatically obtain this information, so this ; likely won't need to be set (other than for a remote bitcoind instance). ; Default: ; bitcoind.zmqpubrawblock= ; Example: ; bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332 ; Default: ; bitcoind.zmqpubrawtx= ; Example: ; bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333 ; Default: ; bitcoind.zmqreaddeadline=5s ; Use bitcoind's rpc interface to get block and transaction notifications ; instead of using the zmq interface. Only the rpcpolling option needs to ; be set in order to enable this, the rest of the options can be used to ; change the default values used for this configuration. ; bitcoind.rpcpolling=false ; Default: ; bitcoind.blockpollinginterval=0s ; Example: ; bitcoind.blockpollinginterval=1m ; Default: ; bitcoind.txpollinginterval=0s ; Example: ; bitcoind.txpollinginterval=30s ; Fee estimate mode for bitcoind. It must be either "ECONOMICAL" or "CONSERVATIVE". ; If unset, the default value is "CONSERVATIVE". ; bitcoind.estimatemode=CONSERVATIVE ; The maximum number of peers lnd will choose from the backend node to retrieve ; pruned blocks from. This only applies to pruned nodes. ; bitcoind.pruned-node-max-peers=4 [neutrino] ; Connect only to the specified peers at startup. This creates a persistent ; connection to a target peer. This is recommended as there aren't many ; neutrino compliant full nodes on the test network yet. ; neutrino.connect= ; Max number of inbound and outbound peers. ; ; NOTE: This value is currently unused. ; neutrino.maxpeers= ; Add a peer to connect with at startup. ; neutrino.addpeer= ; How long to ban misbehaving peers. Valid time units are {s, m, h}. Minimum 1 ; second. ; ; NOTE: This value is currently unused. ; neutrino.banduration= ; Maximum allowed ban score before disconnecting and banning misbehaving peers. ; ; NOTE: This value is currently unused. ; neutrino.banthreshold= ; Optional filter header in height:hash format to assert the state of neutrino's ; filter header chain on startup. If the assertion does not hold, then the ; filter header chain will be re-synced from the genesis block. ; neutrino.assertfilterheader= ; Used to help identify ourselves to other bitcoin peers. ; neutrino.useragentname=neutrino ; Used to help identify ourselves to other bitcoin peers. ; neutrino.useragentversion=0.12.0-beta ; The amount of time to wait before giving up on a transaction broadcast attempt. ; Default: ; neutrino.broadcasttimeout=0s ; Example: ; neutrino.broadcasttimeout=5s ; Whether compact filters fetched from the P2P network should be persisted to disk. ; neutrino.persistfilters=false ; Validate every channel in the graph during sync by downloading the containing ; block. This is the inverse of routing.assumechanvalid, meaning that for ; Neutrino the validation is turned off by default for massively increased graph ; sync performance. This speedup comes at the risk of using an unvalidated view ; of the network for routing. Overwrites the value of routing.assumechanvalid if ; Neutrino is used. ; neutrino.validatechannels=false [autopilot] ; If the autopilot agent should be active or not. The autopilot agent will ; attempt to automatically open up channels to put your node in an advantageous ; position within the network graph. ; autopilot.active=false ; The maximum number of channels that should be created. ; autopilot.maxchannels=5 ; The fraction of total funds that should be committed to automatic channel ; establishment. For example 0.6 means that 60% of the total funds available ; within the wallet should be used to automatically establish channels. The total ; amount of attempted channels will still respect the maxchannels param. ; autopilot.allocation=0.6 ; Heuristic to activate, and the weight to give it during scoring. ; Default: ; autopilot.heuristic={top_centrality:1} ; Example: ; autopilot.heuristic={preferential:1} ; The smallest channel that the autopilot agent should create ; autopilot.minchansize=20000 ; The largest channel that the autopilot agent should create ; autopilot.maxchansize=16777215 ; Whether the channels created by the autopilot agent should be private or not. ; Private channels won't be announced to the network. ; autopilot.private=false ; The minimum number of confirmations each of your inputs in funding transactions ; created by the autopilot agent must have. ; autopilot.minconfs=1 ; The confirmation target (in blocks) for channels opened by autopilot. ; autopilot.conftarget=3 [tor] ; Allow outbound and inbound connections to be routed through Tor. ; tor.active=false ; Allow the node to connect to non-onion services directly via clearnet. This ; allows the node operator to use direct connections to peers not running behind ; Tor, thus allowing lower latency and better connection stability. ; WARNING: This option will reveal the source IP address of the node, and should ; be used only if privacy is not a concern. ; tor.skip-proxy-for-clearnet-targets=false ; The port that Tor's exposed SOCKS5 proxy is listening on. Using Tor allows ; outbound-only connections (listening will be disabled) -- NOTE port must be ; between 1024 and 65535. ; Default: ; tor.socks=localhost:9050 ; Example: ; tor.socks=9050 ; The DNS server as IP:PORT that Tor will use for SRV queries - NOTE must have ; TCP resolution enabled. The current active DNS server for Testnet listening is ; nodes.lightning.directory. ; Default: ; tor.dns=soa.nodes.lightning.directory:53 ; Example: ; tor.dns=nodes.lightning.directory ; Enable Tor stream isolation by randomizing user credentials for each ; connection. With this mode active, each connection will use a new circuit. ; This means that multiple applications (other than lnd) using Tor won't be mixed ; in with lnd's traffic. ; ; This option may not be used while direct connections are enabled, since direct ; connections compromise source IP privacy by default. ; tor.streamisolation=false ; The host:port that Tor is listening on for Tor control connections. ; tor.control=localhost:9051 ; IP address that Tor should use as the target of the hidden service. ; tor.targetipaddress= ; The password used to arrive at the HashedControlPassword for the control port. ; If provided, the HASHEDPASSWORD authentication method will be used instead of ; the SAFECOOKIE one. ; Default: ; tor.password= ; Example: ; tor.password=plsdonthackme ; Automatically set up a v2 onion service to listen for inbound connections. ; tor.v2=false ; Automatically set up a v3 onion service to listen for inbound connections. ; tor.v3=false ; The path to the private key of the onion service being created. ; Default: ; tor.privatekeypath= ; Example: ; tor.privatekeypath=/path/to/torkey ; The path to the private key of the watchtower onion service being created. ; Default: ; tor.watchtowerkeypath= ; Example: ; tor.watchtowerkeypath=/other/path/ ; Instructs lnd to encrypt the private key using the wallet's seed. ; tor.encryptkey=false [watchtower] ; Enable integrated watchtower listening on :9911 by default. ; watchtower.active=false ; Specify the interfaces to listen on for watchtower client connections. One ; listen address per line. If no port is specified the default port of 9911 will ; be added implicitly. ; Default: ; watchtower.listen= ; Example (option can be specified multiple times): ; All ipv4 on port 9911: ; watchtower.listen=0.0.0.0:9911 ; On all ipv4 interfaces on port 9911 and ipv6 localhost port 9912: ; watchtower.listen=0.0.0.0:9911 ; watchtower.listen=[::1]:9912 ; Configure the external IP address of your watchtower. Setting this field does ; not have any behavioral changes to the tower or enable any sort of discovery, ; however it will make the full URI (pubkey@host:port) available via ; WatchtowerRPC.GetInfo and `lncli tower info`. ; Default: ; watchtower.externalip= ; Example: ; watchtower.externalip=1.2.3.4 ; Configure the default watchtower data directory. The default directory is ; data/watchtower relative to the chosen lnddir. This can be useful if one needs ; to move the database to a separate volume with more storage. ; Default: ; watchtower.towerdir=~/.lnd/data/watchtower ; Example: ; watchtower.towerdir=/path/to/towerdir ; In this example, the database will be stored at: ; /path/to/towerdir/bitcoin//watchtower.db ; Duration the watchtower server will wait for messages to be received before ; hanging up on client connections. ; watchtower.readtimeout=15s ; Duration the watchtower server will wait for messages to be written before ; hanging up on client connections ; watchtower.writetimeout=15s [wtclient] ; Activate Watchtower Client. To get more information or configure watchtowers ; run `lncli wtclient -h`. ; wtclient.active=false ; Specify the fee rate with which justice transactions will be signed. This fee ; rate should be chosen as a maximum fee rate one is willing to pay in order to ; sweep funds if a breach occurs while being offline. The fee rate should be ; specified in sat/vbyte. ; wtclient.sweep-fee-rate=10 ; The range over which to choose a random number of blocks to wait after the ; last channel of a session is closed before sending the DeleteSession message ; to the tower server. Note that setting this to a lower value will result in ; faster session cleanup _but_ that this comes along with reduced privacy from ; the tower server. ; wtclient.session-close-range=288 ; The maximum number of updates to include in a tower session. ; wtclient.max-updates=1024 ; The maximum number of back-up tasks that should be queued in memory before ; overflowing to disk. ; wtclient.max-tasks-in-mem-queue=2000 [healthcheck] ; The number of times we should attempt to query our chain backend before ; gracefully shutting down. Set this value to 0 to disable this health check. ; healthcheck.chainbackend.attempts=3 ; The amount of time we allow a call to our chain backend to take before we fail ; the attempt. This value must be >= 1s. ; healthcheck.chainbackend.timeout=30s ; The amount of time we should backoff between failed attempts to query chain ; backend. This value must be >= 1s. ; healthcheck.chainbackend.backoff=2m ; The amount of time we should wait between chain backend health checks. This ; value must be >= 1m. ; healthcheck.chainbackend.interval=1m ; The minimum ratio of free disk space to total capacity that we require. ; healthcheck.diskspace.diskrequired=0.1 ; The number of times we should attempt to query our available disk space before ; gracefully shutting down. Set this value to 0 to disable this health check. ; Default: ; healthcheck.diskspace.attempts=0 ; Example: ; healthcheck.diskspace.attempts=2 ; The amount of time we allow a query for our available disk space to take ; before we fail the attempt. This value must be >= 1s. ; healthcheck.diskspace.timeout=5s ; The amount of time we should backoff between failed attempts to query ; available disk space. This value must be >= 1s. ; healthcheck.diskspace.backoff=1m ; The amount of time we should wait between disk space health checks. This ; value must be >= 1m. ; healthcheck.diskspace.interval=12h ; The number of times we should attempt to check for certificate expiration before ; gracefully shutting down. Set this value to 0 to disable this health check. ; Default: ; healthcheck.tls.attempts= ; Example: ; healthcheck.tls.attempts=2 ; The amount of time we allow a query for certificate expiration to take ; before we fail the attempt. This value must be >= 1s. ; healthcheck.tls.timeout=5s ; The amount of time we should backoff between failed attempts to query ; certificate expiration. This value must be >= 1s. ; healthcheck.tls.backoff=1m ; The amount of time we should wait between certificate expiration health checks. ; This value must be >= 1m. ; healthcheck.tls.interval=1m ; The number of times we should attempt to check our tor connection before ; gracefully shutting down. Set this value to 0 to disable this health check. ; Default: ; healthcheck.torconnection.attempts= ; Example: ; healthcheck.torconnection.attempts=3 ; The amount of time we allow a call to our tor connection to take before we ; fail the attempt. This value must be >= 1s. ; Default: ; healthcheck.torconnection.timeout=5s ; The amount of time we should backoff between failed attempts to check tor ; connection. This value must be >= 1s. ; healthcheck.torconnection.backoff=1m ; The amount of time we should wait between tor connection health checks. This ; value must be >= 1m. ; healthcheck.torconnection.interval=1m ; The number of times we should attempt to check our remote signer RPC ; connection before gracefully shutting down. Set this value to 0 to disable ; this health check. ; healthcheck.remotesigner.attempts=1 ; The amount of time we allow a call to our remote signer RPC connection to take ; before we fail the attempt. This value must be >= 1s. ; healthcheck.remotesigner.timeout=1s ; The amount of time we should backoff between failed attempts to check remote ; signer RPC connection. This value must be >= 1s. ; healthcheck.remotesigner.backoff=30s ; The amount of time we should wait between remote signer RPC connection health ; checks. This value must be >= 1m. ; healthcheck.remotesigner.interval=1m [signrpc] ; Path to the signer macaroon. ; Default: ; signrpc.signermacaroonpath=~/.lnd/data/chain/bitcoin/${network}/signer.macaroon ; Example: ; signrpc.signermacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/signer.macaroon [walletrpc] ; Path to the wallet kit macaroon. ; Default: ; walletrpc.walletkitmacaroonpath=~/.lnd/data/chain/bitcoin/${network}/walletkit.macaroon ; Example: ; walletrpc.walletkitmacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/walletkit.macaroon [chainrpc] ; Path to the chain notifier macaroon. ; Default: ; chainrpc.notifiermacaroonpath=~/.lnd/data/chain/bitcoin/${network}/chainnotifier.macaroon ; Example: ; chainrpc.notifiermacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/chainnotifier.macaroon [routerrpc] ; Probability estimator used for pathfinding. Two estimators are available: ; apriori and bimodal. ; Note that the bimodal estimator is experimental. ; Default: ; routerrpc.estimator=apriori ; Example: ; routerrpc.estimator=bimodal ; Minimum required route success probability to attempt the payment. ; routerrpc.minrtprob=0.01 ; The maximum number of payment results that are held on disk by mission control. ; routerrpc.maxmchistory=1000 ; The time interval with which the MC store state is flushed to the database. ; routerrpc.mcflushinterval=1s ; Path to the router macaroon. ; Default: ; routerrpc.routermacaroonpath=~/.lnd/data/chain/bitcoin/${network}/router.macaroon ; Example: ; routerrpc.routermacaroonpath=~/.lnd/data/chain/bitcoin/mainnet/router.macaroon ; The (virtual) fixed cost in sats of a failed payment attempt . ; routerrpc.attemptcost=100 ; The (virtual) proportional cost in ppm of the total amount of a failed payment ; attempt. ; routerrpc.attemptcostppm=1000 ; Assumed success probability of a hop in a route when no other information is ; available. ; routerrpc.apriori.hopprob=0.6 ; Weight of the a priori probability in success probability estimation. Valid ; values are in [0, 1]. ; routerrpc.apriori.weight=0.5 ; Defines the duration after which a penalized node or channel is back at 50% ; probability. ; routerrpc.apriori.penaltyhalflife=1h ; Defines the fraction of channels' capacities that is considered liquid in ; pathfinding, a value between [0.75-1.0]. A value of 1.0 disables this ; feature. ; routerrpc.apriori.capacityfraction=0.9999 ; Describes the scale over which channels still have some liquidity left on ; both channel ends. A very low value (compared to typical channel capacities) ; means that we assume unbalanced channels, a very high value means randomly ; balanced channels. Value in msat. ; routerrpc.bimodal.scale=300000000 ; Defines how strongly non-routed channels of forwarders should be taken into ; account for probability estimation. A weight of zero disables this feature. ; Valid values are in [0, 1]. ; routerrpc.bimodal.nodeweight=0.2 ; Defines the information decay of knowledge about previous successes and ; failures in channels. ; routerrpc.bimodal.decaytime=168h ; If set, the router will send `Payment_INITIATED` for new payments, otherwise ; `Payment_In_FLIGHT` will be sent for compatibility concerns. ; routerrpc.usestatusinitiated=false ; Defines the maximum duration that the probing fee estimation is allowed to ; take. ; routerrpc.fee-estimation-timeout=1m [workers] ; Maximum number of concurrent read pool workers. This number should be ; proportional to the number of peers. ; workers.read=100 ; Maximum number of concurrent write pool workers. This number should be ; proportional to the number of CPUs on the host. ; workers.write=8 ; Maximum number of concurrent sig pool workers. This number should be ; proportional to the number of CPUs on the host. ; workers.sig=8 [caches] ; Maximum number of entries contained in the reject cache, which is used to speed ; up filtering of new channel announcements and channel updates from peers. Each ; entry requires 25 bytes. ; caches.reject-cache-size=50000 ; Maximum number of entries contained in the channel cache, which is used to ; reduce memory allocations from gossip queries from peers. Each entry requires ; roughly 2Kb. ; caches.channel-cache-size=20000 ; The duration that the response to DescribeGraph should be cached for. Setting ; the value to zero disables the cache. ; Default: ; caches.rpc-graph-cache-duration= ; Example: ; caches.rpc-graph-cache-duration=10m [protocol] ; If set, then lnd will create and accept requests for channels larger than 0.16 ; BTC ; protocol.wumbo-channels=false ; Set to disable support for anchor commitments. If not set, lnd will use anchor ; channels by default if the remote channel party supports them. Note that lnd ; will require 1 UTXO to be reserved for this channel type if it is enabled. ; (Deprecates the previous "protocol.anchors" setting.) ; protocol.no-anchors=false ; Set to disable support for script enforced lease channel commitments. If not ; set, lnd will accept these channels by default if the remote channel party ; proposes them. Note that lnd will require 1 UTXO to be reserved for this ; channel type if it is enabled. ; protocol.no-script-enforced-lease=false ; Set to enable support for option_scid_alias channels, which can be referred ; to by an alias instead of the confirmed ShortChannelID. Additionally, is ; needed to open zero-conf channels. ; protocol.option-scid-alias=false ; Set to enable support for zero-conf channels. This requires the ; option-scid-alias flag to also be set. ; protocol.zero-conf=false ; Set to disable support for using P2TR addresses (and beyond) for co-op ; closing. ; protocol.no-any-segwit=false ; Set to disable querying our peers for the timestamps of announcement ; messages and to disable responding to such queries ; protocol.no-timestamp-query-option=false ; Set to enable support for the experimental taproot channel type. ; protocol.simple-taproot-chans=false ; Set to disable blinded route forwarding. ; protocol.no-route-blinding=false ; Set to handle messages of a particular type that falls outside of the ; custom message number range (i.e. 513 is onion messages). Note that you can ; set this option as many times as you want to support more than one custom ; message type. ; Default: ; protocol.custom-message= ; Example: ; protocol.custom-message=513 ; Specifies feature bits — numbers defined in BOLT 9 — to advertise in the ; node's init message. Note that you can set this option as many times as you ; want to support more than one feature bit. ; Default: ; protocol.custom-init= ; Example: ; protocol.custom-init=39 ; Specifies custom feature bits — numbers defined in BOLT 9 — to advertise in ; the node's announcement message. Note that you can set this option as many ; times as you want to support more than one feature bit. ; Default: ; protocol.custom-nodeann= ; Example: ; protocol.custom-nodeann=39 ; Specifies custom feature bits — numbers defined in BOLT 9 — to advertise in ; the node's invoices. Note that you can set this option as many times as you ; want to support more than one feature bit. ; Default: ; protocol.custom-invoice= ; Example: ; protocol.custom-invoice=39 [db] ; The selected database backend. The current default backend is "bolt". lnd ; also has experimental support for etcd, a replicated backend, postgres and ; sqlite. ; db.backend=bolt ; The maximum interval the graph database will wait between attempting to flush ; a batch of modifications to disk. ; db.batch-commit-interval=500ms ; Don't use the in-memory graph cache for path finding. Much slower but uses ; less RAM. Can only be used with a bolt database backend. ; db.no-graph-cache=false ; Specify whether the optional migration for pruning old revocation logs ; should be applied. This migration will only save disk space if there are open ; channels prior to lnd@v0.15.0. ; db.prune-revocation=false ; If set to true, then the to-local and to-remote output amount data of revoked ; commitment transactions will not be stored in the revocation log. Note that ; this flag can only be set if --wtclient.active is not set. It is not ; recommended to set this flag if you plan on ever setting wtclient.active in ; the future. ; db.no-rev-log-amt-data=false ; If set to true, native SQL will be used instead of KV emulation for tables ; that support it already. Note: this is an experimental feature, use at your ; own risk. ; db.use-native-sql=false [etcd] ; Etcd database host. ; Default: ; db.etcd.host= ; Example: ; db.etcd.host=localhost:2379 ; Etcd database user. ; Default: ; db.etcd.user= ; Example: ; db.etcd.user=userscopedforlnd ; Password for the database user. ; Default: ; db.etcd.pass= ; Example: ; db.etcd.pass=longandsekrit ; Etcd namespace to use. ; Default: ; db.etcd.namespace= ; Example: ; db.etcd.namespace=lnd ; Whether to disable the use of TLS for etcd. ; db.etcd.disabletls=false ; Path to the TLS certificate for etcd RPC. ; Default: ; db.etcd.cert_file= ; Example: ; db.etcd.cert_file=/key/path ; Path to the TLS private key for etcd RPC. ; Default: ; db.etcd.key_file= ; Example: ; db.etcd.key_file=/a/path ; Whether we intend to skip TLS verification ; db.etcd.insecure_skip_verify=false ; Whether to collect etcd commit stats. ; db.etcd.collect_stats=false ; If set LND will use an embedded etcd instance instead of the external one. ; Useful for testing. ; db.etcd.embedded=false ; If non zero, LND will use this as client port for the embedded etcd instance. ; Default: ; db.etcd.embedded_client_port= ; Example: ; db.etcd.embedded_client_port=1234 ; If non zero, LND will use this as peer port for the embedded etcd instance. ; Default: ; db.etcd.embedded_peer_port= ; Example: ; db.etcd.embedded_peer_port=1235 ; If set the embedded etcd instance will log to the specified file. Useful when ; testing with embedded etcd. ; Default: ; db.etcd.embedded_log_file= ; Example: ; db.etcd.embedded_log_file=/path/etcd.log ; The maximum message size in bytes that we may send to etcd. Defaults to 32 MiB. ; db.etcd.max_msg_size=33554432 [postgres] ; Postgres connection string. ; Default: ; db.postgres.dsn= ; Example: ; db.postgres.dsn=postgres://lnd:lnd@localhost:45432/lnd?sslmode=disable ; Postgres connection timeout. Valid time units are {s, m, h}. Set to zero to ; disable. ; db.postgres.timeout= ; Postgres maximum number of connections. Set to zero for unlimited. It is ; recommended to set a limit that is below the server connection limit. ; Otherwise errors may occur in lnd under high-load conditions. ; Default: ; db.postgres.maxconnections=50 ; Example: ; db.postgres.maxconnections= ; Whether to skip executing schema migrations. ; db.postgres.skipmigrations=false [sqlite] ; Sqlite connection timeout. Valid time units are {s, m, h}. Set to zero to ; disable. ; Default: ; db.sqlite.timeout= ; Example: ; db.sqlite.timeout=0s ; Maximum number of connections to the sqlite db. Set to zero for unlimited. ; db.sqlite.maxconnections=2 ; The maximum amount of time to wait to execute a query if the db is locked. ; db.sqlite.busytimeout=5s ; Raw pragma option pairs to be used when opening the sqlite db. The flag ; can be specified multiple times to set multiple options. ; Default: ; db.sqlite.pragmaoptions= ; Example (option can be specified multiple times): ; db.sqlite.pragmaoptions=auto_vacuum=incremental ; db.sqlite.pragmaoptions=temp_store=MEMORY ; Whether to skip executing schema migrations. ; db.sqlite.skipmigrations=false [bolt] ; If true, prevents the database from syncing its freelist to disk. ; db.bolt.nofreelistsync=false ; ; Whether the databases used within lnd should automatically be compacted on ; every startup (and if the database has the configured minimum age). This is ; disabled by default because it requires additional disk space to be available ; during the compaction that is freed afterwards. In general compaction leads to ; smaller database files. ; db.bolt.auto-compact=false ; How long ago the last compaction of a database file must be for it to be ; considered for auto compaction again. Can be set to 0 to compact on every ; startup. ; Default: ; db.bolt.auto-compact-min-age=168h ; Example: ; db.bolt.auto-compact-min-age=0 ; Specify the timeout to be used when opening the database. ; db.bolt.dbtimeout=1m [cluster] ; Enables leader election if set. ; cluster.enable-leader-election=false ; Leader elector to use. Valid values: "etcd". ; cluster.leader-elector=etcd ; Election key prefix when using etcd leader elector. ; cluster.etcd-election-prefix=/leader/ ; Identifier for this node inside the cluster (used in leader election). ; Defaults to the hostname. ; cluster.id=example.com ; The session TTL in seconds after which a new leader is elected if the old ; leader is shut down, crashed or becomes unreachable. ; cluster.leader-session-ttl=60 [rpcmiddleware] ; Enable the RPC middleware interceptor functionality. ; rpcmiddleware.enable=false ; Time after which a RPC middleware intercept request will time out and return ; an error if it hasn't yet received a response. ; rpcmiddleware.intercepttimeout=2s ; Add the named middleware to the list of mandatory middlewares. All RPC ; requests are blocked/denied if any of the mandatory middlewares is not ; registered. Can be specified multiple times. ; Default: ; rpcmiddleware.addmandatory= ; Example: ; rpcmiddleware.addmandatory=my-example-middleware ; rpcmiddleware.addmandatory=other-mandatory-middleware [remotesigner] ; Use a remote signer for signing any on-chain related transactions or messages. ; Only recommended if local wallet is initialized as watch-only. Remote signer ; must use the same seed/root key as the local watch-only wallet but must have ; private keys. ; remotesigner.enable=false ; The remote signer's RPC host:port. ; Default: ; remotesigner.rpchost= ; Example: ; remotesigner.rpchost=remote.signer.lnd.host:10009 ; The macaroon to use for authenticating with the remote signer. ; Default: ; remotesigner.macaroonpath= ; Example: ; remotesigner.macaroonpath=/path/to/remote/signer/admin.macaroon ; The TLS certificate to use for establishing the remote signer's identity. ; Default: ; remotesigner.tlscertpath= ; Example: ; remotesigner.tlscertpath=/path/to/remote/signer/tls.cert ; The timeout for connecting to and signing requests with the remote signer. ; Valid time units are {s, m, h}. ; remotesigner.timeout=5s ; If a wallet with private key material already exists, migrate it into a ; watch-only wallet on first startup. ; WARNING: This cannot be undone! Make sure you have backed up your seed before ; you use this flag! All private keys will be purged from the wallet after first ; unlock with this flag! ; remotesigner.migrate-wallet-to-watch-only=false [gossip] ; Specify a set of pinned gossip syncers, which will always be actively syncing ; whenever the corresponding peer is online. A pinned syncer does not count ; towards the configured `numgraphsyncpeers` since pinned syncers are not ; rotated. Configuring a pinned syncer does not ensure a persistent connection ; to the target peer, they will only be pinned if the connection remains active ; via some other mechanism, e.g. having an open channel. ; ; This feature is useful when trying to ensure that a node keeps its ; routing table tightly synchronized with a set of remote peers, e.g. multiple ; lightning nodes operated by the same service. ; ; Each value should be a hex-encoded pubkey of the pinned peer. Multiple pinned ; peers can be specified by setting multiple flags/fields in the config. ; Default: ; gossip.pinned-syncers= ; Example: ; gossip.pinned-syncers=pubkey1 ; gossip.pinned-syncers=pubkey2 ; The maximum number of updates for a specific channel and direction that lnd ; will accept over the channel update interval. ; gossip.max-channel-update-burst=10 ; gossip.channel-update-interval=1m ; The duration to wait before sending the next announcement batch if there are ; multiple. Use a small value if there are a lot announcements and they need to ; be broadcast quickly. ; gossip.sub-batch-delay=5s [invoices] ; If a hold invoice has accepted htlcs that reach their expiry height and are ; not timed out, the channel holding the htlc is force closed to resolve the ; invoice's htlcs. To prevent force closes, lnd automatically cancels these ; invoices before they reach their expiry height. ; ; Hold expiry delta describes the number of blocks before expiry that these ; invoices should be canceled. Setting this value to 0 will ensure that hold ; invoices can be settled right up until their expiry height, but will result ; in the channel they are on being force closed if they are not resolved before ; expiry. ; ; Lnd goes to chain before the expiry for a htlc is reached so that there is ; time to resolve it on chain. This value needs to be greater than the ; DefaultIncomingBroadcastDelta set by lnd, otherwise the channel will be force ; closed anyway. A warning will be logged on startup if this value is not large ; enough to prevent force closes. ; invoices.holdexpirydelta=12 [routing] ; DEPRECATED: This is now turned on by default for Neutrino (use ; neutrino.validatechannels=true to turn off) and shouldn't be used for any ; other backend! ; routing.assumechanvalid=false ; If set to true, then we'll prune a channel if only a single edge is seen as ; being stale. This results in a more compact channel graph, and also is helpful ; for neutrino nodes as it means they'll only maintain edges where both nodes are ; seen as being live from it's PoV. ; routing.strictgraphpruning=false [sweeper] ; DEPRECATED: Duration of the sweep batch window. The sweep is held back during ; the batch window to allow more inputs to be added and thereby lower the fee ; per input. ; sweeper.batchwindowduration=30s ; The max fee rate in sat/vb which can be used when sweeping funds. Setting ; this value too low can result in transactions not being confirmed in time, ; causing HTLCs to expire hence potentially losing funds. ; sweeper.maxfeerate=1000 ; The conf target to use when sweeping non-time-sensitive outputs. This is ; useful for sweeping outputs that are not time-sensitive, and can be swept at ; a lower fee rate. ; sweeper.nodeadlineconftarget=1008 ; An optional config group that's used for the automatic sweep fee estimation. ; The Budget config gives options to limits ones fee exposure when sweeping ; unilateral close outputs and the fee rate calculated from budgets is capped ; at sweeper.maxfeerate. Check the budget config options for more details. ; sweeper.budget= [sweeper.budget] ; The amount in satoshis to allocate as the budget to pay fees when sweeping ; the to_local output. If set, the budget calculated using the ratio (if set) ; will be capped at this value. ; sweeper.budget.tolocal= ; The ratio of the value in to_local output to allocate as the budget to pay ; fees when sweeping it. ; sweeper.budget.tolocalratio=0.5 ; The amount in satoshis to allocate as the budget to pay fees when CPFPing a ; force close tx using the anchor output. If set, the budget calculated using ; the ratio (if set) will be capped at this value. ; sweeper.budget.anchorcpfp= ; The ratio of a special value to allocate as the budget to pay fees when ; CPFPing a force close tx using the anchor output. The special value is the ; sum of all time-sensitive HTLCs on this commitment subtracted by their ; budgets. ; sweeper.budget.anchorcpfpratio=0.5 ; The amount in satoshis to allocate as the budget to pay fees when sweeping a ; time-sensitive (first-level) HTLC. If set, the budget calculated using the ; ratio (if set) will be capped at this value. ; sweeper.budget.deadlinehtlc= ; The ratio of the value in a time-sensitive (first-level) HTLC to allocate as ; the budget to pay fees when sweeping it. ; sweeper.budget.deadlinehtlcratio=0.5 ; The amount in satoshis to allocate as the budget to pay fees when sweeping a ; non-time-sensitive (second-level) HTLC. If set, the budget calculated using ; the ratio (if set) will be capped at this value. ; sweeper.budget.nodeadlinehtlc= ; The ratio of the value in a non-time-sensitive (second-level) HTLC to ; allocate as the budget to pay fees when sweeping it. ; sweeper.budget.nodeadlinehtlcratio=0.5 [htlcswitch] ; The timeout value when delivering HTLCs to a channel link. Setting this value ; too small will result in local payment failures if large number of payments ; are sent over a short period. ; htlcswitch.mailboxdeliverytimeout=1m [grpc] ; How long the server waits on a gRPC stream with no activity before pinging the ; client. Valid time units are {s, m, h}. ; grpc.server-ping-time=1m ; How long the server waits for the response from the client for the keepalive ; ping response. Valid time units are {s, m, h}. ; grpc.server-ping-timeout=20s ; The minimum amount of time the client should wait before sending a keepalive ; ping. Valid time units are {s, m, h}. ; grpc.client-ping-min-wait=5s ; If true, the server allows keepalive pings from the client even when there are ; no active gRPC streams. This might be useful to keep the underlying HTTP/2 ; connection open for future requests. ; grpc.client-allow-ping-without-stream=false