This short doc goes into how to open zero-conf channels as either the funder or fundee.
2.8 KiB
Setting up zero-conf channels in LND
Zero-conf channels are channels that do not require confirmations to be used. Because of this, the fundee must trust the funder to not double-spend the channel and steal the balance of the channel.
Startup
Two options must be specified either on the command line or in the config file:
protocol.option-scid-alias
protocol.zero-conf
If one of these is missing, zero-conf channels won't work. This applies for both the funder and fundee.
Opening the channel
The channel open flow is slightly different, so there are new requirements for the initiator and responder in the funding flow.
Initiator requirements
When opening the channel, the initiator must ensure that the anchors
channel_type is
enabled. Additionally, the initiator must specify on the openchannel
command line call
or the corresponding RPC that the zero-conf flag is set.
Responder requirements
The responder flow is different from the initiator's. If the responder has not specified a ChannelAcceptor, then ALL open channel requests will be failed regardless if they are zero-conf or not. The ChannelAcceptor RPC will give the responder information on whether the initiator is requesting a zero-conf channel via the channel type.
If the responder has specified a ChannelAcceptor and the funder has set the zero-conf channel type, then the responder should set the ZeroConf flag to true if they wish to accept it and false otherwise. If ZeroConf is true, then MinAcceptDepth should be zero.
It is possible for the responder to set the ZeroConf flag to true even when the funder did not specify the zero-conf channel type. This will only create a zero-conf channel if the funder is a non-LND node that supports this behavior. This is for compatibility with LDK nodes. In this case, the responder must know that the funder is using an implementation that supports this behavior (like LDK). The scid-alias feature bit must also have been negotiated.
Updated RPC calls
The listchannels
and closedchannels
RPC calls have been updated. They now include a
list of all aliases that the channel has used. The ChanId
in the response is the
confirmed SCID for non-zero-conf channels. For zero-conf channels, the ChanID
is the
first alias used in the channel. The RPCs will also return the confirmed SCID for
zero-conf channels in a separate field.
A new RPC listaliases
has been introduced. It returns a set of mappings from one SCID
to a list of SCIDS. The key is the confirmed SCID for non-zero-conf channels. For
zero-conf channels, it is the first alias used in the channel. The values are the list
of all aliases ever used in the channel (including the key for zero-conf channels). This
information can be cross-referenced with the output of listchannels
and closedchannels
to determine what channel a particular alias belongs to.